2005-07-24 [長年日記]
■不明瞭な答えだった
Java で内部クラスから外部クラスの関数を明示的に呼ぶときはど.. - 人力検索はてな
http://www.hatena.ne.jp/1122203296
4.の回答が私だけど、
Outer.thisの形式は覚えておくと色々使えます。
が曖昧だった。
メソッドに限らずフィールド参照にも使える、というだけの意味でしかなかった。
メソッドに限らずフィールド参照は当然できる。
それ以外に、クラスOuterを引数に取る他のクラスのメソッドを呼びたい場合でも。
class Outer { void foo(){ } class Inner { void foo() { } //ここから下が回答です。 void bar() { foo(); //Inner#foo()のこと Outer.this.foo(); //Outer#fooのこと //Baz.execがOuterを引数に取るメソッドだとして Baz baz = new Baz(); baz.exec(Outer.this); //この様に呼び出せる。 } } }