2014-06-06 29 views
0

我在這裏創建了一個嵌套類的代碼,然後檢查是否有值。答案是[???]的地方,給我的代碼不能改變。如何在Java中訪問內部類(在assert中)

//The answer must have balanced parentesis 
class A{ 
    class C{ 
    int foo(){return 42;} 
    } 
} 
public class Exercise{ 

    public static void main(String [] arg){ 
    assert ([???].foo()==42); 
    } 
} 

問題:如何訪問C中的foo()方法(它在A中)?

回答

3

爲了運行C類的非靜態方法,你需要創建的C一個實例,但C非靜態內部類A的,因此你需要創建的A一個實例,您可以創建前C。所以,要創建A

c.foo() 

所有在一行

C c = a.new C(); 

要調用方法foo:

A a = new A(); 

要創建C

new A().new C().foo() 
0

dimoniy是正確的。

,你也可以做:

A.C c = new A().new C(); 

assert (c.foo() == 42); 
+0

問題是,那麼我將不得不關閉第一斷言語句 – user3677898