2012-09-20 4 views
4

클래스 C가 클래스 B 내에 중첩되어 있고 클래스 B가 클래스 A 내에 중첩되어있는 경우 어떻게 클래스 C를 인스턴스화 할 수 있습니까? C를 인스턴스화Java 중첩 클래스 중첩

class A { 
    class B { 
     class C { 
      .............. 
     } 
    } 
} 

답변

3

, 당신은 다시 A의 둘러싸는 인스턴스를해야합니다 B의 둘러싸는 인스턴스를해야합니다. 이 같은

A someA = new A(); 
B someB = a.new B(); 
C someC = b.new C(); 
2

뭔가가

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

당신은 당신이 원하는 경우 새로운() 라인을 연결할 수 있습니다해야한다.

1

이렇게 인스턴스화 할 수 있습니다. 기능에 의존하지 않는 클래스가 중첩되는 경우

A a = new A(); 
A.B b = a.new B(); 
A.B.C c = b.new C(); 

이 작동 ..

public class InnerClassTest1 { 
    public static void main(String[] args) { 
     A a = new A(); 
     A.B b = a.new B(); 
     A.B.C c = b.new C(); 
     c.setValue(100); 
     System.out.println("Innermost value " + c.getValue()); 
    } 
} 
class A { 
    class B { 
     class C { 
      int value; 

      public int getValue() { 
       return value; 
      } 

      public void setValue(int value) { 
       this.value = value; 
      } 

     } 
    } 
} 
0

는, 즉 class C 그런 다음 내부를 만들 수있는 방법 및/또는 class B 또는 class A의 필드를 참조하지 않습니다 static 클래스.

class A { 
    static class B { 
     static class C { 
      ... 
     } 
    } 
} 

당신은 당신이 원하는 위치에서 그들을 만들 수 있습니다

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