2017-01-27 95 views
-1

我已經定義了包含內部類定義這樣一個類的內部類: -如何正確地定義和實例

public class A{ 
public class B{ 
    } 
} 

然而,當我編譯我的代碼,我做的編譯器針對此得到一個錯誤line:

A.B innerObj=outerObj.new A.B(); 

我在做什麼錯?

Error: A.java:9: error: ')' expected 
      A.B innerObj=outerObj.new A.B(); 
            ^
+4

你在做什麼錯:沒有發佈實際的編譯器錯誤。 – luk2302

+0

@ luk2303,請你能解釋我上面的錯誤。 –

回答

5

一般語法來創建一個構件內的類的實例如下: -

OuterClassReference.new MemberInnerClassConstructor();

新的運營商已經與外圍實例引用(如outerObj.new)合格, Java編譯器會自動計算出封閉類名的全名。

更改您的代碼應該是: -

A.B innerObj=outerObj.new B(); 
+0

另一種方法是設置內部類爲'static',然後使用預期的語法。 –

+0

即使您將內部類設爲靜態,仍然是他的語法,即A.B innerObj = outerObj.new A.B();將無法工作。 –

+0

如果內部類是靜態的,它將被視爲頂級類,並且不需要爲其對象創建而封裝類的實例。在那種情況下,他可以做B innerObj = new B();在A類中。 –

1

這裏是另一種方式來創建內部類實例,

// Instantiating the outer class 
A outer = new A(); 

// Instantiating the inner class 
A.B inner = outer.new B(); 

希望這有助於

0
public class OuterClass { 

class innerClass{ 
    void show(){ 
     System.out.println("this is a inner class"); 
    } 
} 
public static void main(String[] args) { 


    OuterClass oc=new OuterClass(); 
    OuterClass.innerClass ic=oc.new innerClass(); 
    ic.show(); 
} } 

//Output: this is a inner Class 

你需要外部類的參考實例化內部類