2013-10-24 3 views
0

Мой основной код Java как то:Как вызвать метод из класса внутри другого класса

package Javathesis; 

//import... etc 
//... 


public class Javathesis; // My main class 

{ 
    public static void // There are a lot of these classes here 
    //... 
    //... 

    class x 
    { 
     String a; 
     String b; 

     x(String a, String b) 
     { 
      this.a = a; 
      this.b = b; 
     } 
    } 
    public void getAllDataDB1 
    { 
     ArrayList<ArrayList<x>> cells = new ArrayList<>(); 
     while(resTablesData1.next()) 
     { 
      ArrayList<CellValue> row = new ArrayList<>(); 
      for (int k=0; k<colCount ; k++) { 
      String colName = rsmd.getColumnName(i); 
      Object o = resTablesData1.getObject(colName); 
      row.add(new x(rsmd.getColumnType(),o.toString()); 
     } 
     cells.add(row); 
    } 

    public static void main(String[] args) 
    { 
     connectToDB1(); 
     // i want to call an instance of class "x" HERE!!! 
    } 
} 

Как я могу назвать класс х в государственной статической силы основных? Я делаю что-то неправильно? Я уже проверяю, как я знаю

Class class = new Class(); 
class.x(String a, String b); 

но я получаю ошибки. Может ли кто-нибудь помочь мне исправить это? Спасибо заранее.

+0

Если вы получили некоторые ошибки - напишите их и поместите в свой пост. –

+0

Возможный дубликат [как вызвать метод внутреннего класса из метода static main()] (http://stackoverflow.com/questions/16954599/how-to-call-inner-classs-method-from-static-main-method) –

ответ

1

Есть несколько проблем с этим кодом:

Class class = new Class(); 
class.x(String a, String b); 

Вы не можете назвать переменную «класса», это зарезервированное слово. Кроме того, x является классом - вы не можете просто называть его, вам нужно его создать.

Кроме того, почему вы создаете экземпляр класса - это класс, инкапсулирующий знания о классе Java?

Нечто подобное может работать:

Javathesis thesis = new Javathesis(); 
Javathesis.x thesis_x = new thesis.x("a","b); 

Кроме того, пожалуйста, начинайте имена классов с большой буквы - это соглашение, в Java.

3

Поскольку x является внутренний класс он необходим экземпляр внешнего класса для получения ссылки:

Class x = new Javathesis().new x(a, b); 

Кроме того, точка с запятой должна быть удалена из класса декларации

методы в x может вызывается с использованием созданной ссылки

Соглашения о присвоении имен Java показывают, что классы начинаются с в верхнем регистре. Кроме того, его хорошо, чтобы дать классу более значимое имя, чем одно имя буквы

1

Вы должны создать экземпляр вашего внутреннего класса

YourInnerClass inner = new YourOuterClass().new YourInnerClass(); 

, а затем вызвать метод на нем

inner.doMyStuff(); 
-1

Чтобы вызвать метод класса без создания экземпляра объекта из этого класса, метод должен быть объявлен как статический, а затем вызываться из любого места, где вы хотите использовать аргументы в круглых скобках с именем класса.

общественного класса {х

// конструктор и т.д.

открытые статические INT добавить (целое х, у) {

возвращение х + у;

}

}

// сделать вызов из другого

ИНТ у = x.add (4,5);

+0

Проблема здесь - это внутренний класс. Вы почти не отвечаете на вопрос. –

Смежные вопросы