0
public class TopLevel {

    private void someMethod() {
        Nested.this.someMethod(); // compile error
    }

    private class Nested {
        private void someMethod() {
            TopLevel.this.someMethod(); // so-called "qualified this": OK
        }
    }

}

私がやろうとしていることは明らかだと思います。Nestedのメソッドにアクセスする方法はありsomeMethod()ますか?

4

4 に答える 4

3

これは、class Nested内部クラスTopLevelであり、それを囲むのインスタンスへの暗黙的な参照を持っているためです。

アクセスするにはクラスのインスタンスが必要ですNestedsomeMethod

private void someMethod() {
    new Nested().someMethod();
}

あなたのNestedクラスはstaticのインスタンスに結び付けられていないため、TopLevelを使用してこのインスタンスにアクセスできますTopLevel.this

Nestedこれと同じことが逆に適用されることはありませんTopLevel。非メンバーNestedにアクセスするには、 のインスタンスを明示的に作成する必要があります。static

于 2013-10-02T11:41:31.180 に答える
1

Nestedインスタンス メソッドsomeMethodを呼び出せるように のインスタンスを作成する

new Nested().someMethod();
于 2013-10-02T11:41:28.787 に答える
0

静的にアクセスしたい場合は、ネストされた静的クラスとメソッドを静的にします

于 2013-10-02T11:43:24.203 に答える
0

試す

new Nested().someMethod();

非静的内部クラスであるため、そのメソッドにアクセスするにはインスタンスを作成する必要があります

于 2013-10-02T11:41:41.857 に答える