4

クラス C がクラス B 内にネストされ、クラス B が再びクラス A 内にネストされている場合、クラス C をインスタンス化するにはどうすればよいですか?

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

4 に答える 4

3

をインスタンス化するCには、 の囲みインスタンスがB必要であり、さらに の囲みインスタンスが必要になりますA

A someA = new A();
B someB = a.new B();
C someC = b.new C();
于 2012-09-20T07:29:30.590 に答える
2

このような何かがそれを行う必要があります

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

必要に応じて、new() 行を連結できます。

于 2012-09-20T07:35:24.223 に答える
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;
            }

        }
    }
}
于 2012-09-20T07:47:47.530 に答える
0

クラスがネストされていることに機能的に依存していない場合、つまり、またはclass Cのメソッドやフィールドを参照していない場合は、内部クラスを静的にすることができます。class Bclass A

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

その後、好きな場所からそれらを作成できます。

A.B.C c = new A.B.C ();
于 2012-09-20T07:52:07.280 に答える