2012-09-20 95 views
4

如果可以实例化类C,如果它嵌套在类B中,并且类B再次嵌套在类A中?嵌套Java内部类

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

回答

3

为了实例C,你需要的B一个封闭的实例,这反过来将需要的A一个封闭的实例。

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 Bclass A领域,那么你可以让内类静态。

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

然后你可以从你喜欢的地方创建它们:

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