2014-06-06 3 views
0

중첩 된 클래스를 만들고 여기에 값이 있는지 확인하는 코드가 있습니다. 답은 [???]가 현재 어디에 있느냐고, 나에게 주어진 코드는 바꿀 수 없다.Java에서 내부 클래스에 액세스하는 방법 (어설 션 상태에서)

//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() 메소드에 액세스하려면 어떻게해야합니까?

답변

3

클래스 C의 비 정적 메소드를 실행하려면, 당신은 C의 인스턴스를 생성해야하지만 C는의 비 정적 내부 클래스이며, 따라서 당신은 당신이 만들 수 있습니다 전에 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