クラス C がクラス B 内にネストされ、クラス B が再びクラス A 内にネストされている場合、クラス C をインスタンス化するにはどうすればよいですか?
class A {
class B {
class C {
..............
}
}
}
をインスタンス化するC
には、 の囲みインスタンスがB
必要であり、さらに の囲みインスタンスが必要になりますA
。
A someA = new A();
B someB = a.new B();
C someC = b.new C();
このような何かがそれを行う必要があります
A.B.C c = new A().new B().new C();
必要に応じて、new() 行を連結できます。
このようにインスタンス化できます。
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;
}
}
}
}
クラスがネストされていることに機能的に依存していない場合、つまり、またはclass C
のメソッドやフィールドを参照していない場合は、内部クラスを静的にすることができます。class B
class A
class A {
static class B {
static class C {
...
}
}
}
その後、好きな場所からそれらを作成できます。
A.B.C c = new A.B.C ();