5

このケースを考えてみましょう:

public class SomeClass {
    public void someMethod() {
        new SomeInterface() {
              public void someOtherMethod() {
                  new SomeOtherInterface() {
                       new someThirdMethod() {
                            //My question is about code located here.
                       }
                  };
              }
        };
    }
}

コメントされたコードで SomeInterface によって表される匿名の内部クラスのインスタンスを参照する構文はありますか? SomeClass の場合、実行できるSomeClass.thisSomeInterface の実装を取得する同等のものはありますか?

そうでない場合は、もちろん SomeInterface 実装で最終的なローカル変数を定義して参照することもできますが、実際にインスタンスを参照するための直接的な言語サポートがあるかどうか疑問に思っていました。

4

1 に答える 1

5

SomeInterface.thisがコンパイルされない理由は、囲んでいるクラスSomeInterfaceが ではなく、匿名型であるためです。

this修飾された匿名型は使用できません。それが彼らが匿名である理由です。それらを名前で参照することはできず、修飾thisは、囲んでいる型に明示的に名前を付けることによって機能します。

次のようなことを試してみるのは魅力的です:

SomeClass$1.this

しかし、エラーが発生しますSomeClass$1 cannot be resolved to a type。このコードをこの行なしでコンパイルすると、(おそらく) SomeClass$1.class.

非匿名クラスを使用して modified を使用するか、前述のローカル変数手法をthis使用できます。final

参考文献

于 2010-05-28T16:12:44.083 に答える