2013-10-24 100 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!!! 
    } 
} 

我怎麼能叫X類的公共靜態無效的主要?難道我做錯了什麼?我已經測試了我知道的方式

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

但我收到錯誤。有人可以幫我解決這個問題嗎? 在此先感謝。

+0

如果您確實收到了一些錯誤,請將它們寫下並放入您的文章中。 –

+0

[如何從靜態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

你應該就可以了

inner.doMyStuff(); 
-1

創建一個實例你的內部類的

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

,然後調用一個方法要在不實例化該類中的對象的情況下調用某個類方法,該方法必須聲明爲靜態,然後使用類名稱方法圓括號參數從任意位置調用該方法。

公共類X {

//構造等

公共靜態INT加載(INT的x,y){

返回X + Y;

}

}

//從其他地方進行呼叫

INT Y = x.add(4,5);

+0

這裏的問題是一個內部類。你幾乎沒有回答這個問題。 –

相關問題