2009-09-25 21 views

答えて

13

OuterClass.thisでアウターを参照するか、OuterClass.this.method()でメソッドを呼び出すことができます。

しかし、デザインのポイントとして、名前を共有することは混乱しています。内部クラスが拡張を表現している、あるいは抽象メソッドの具体的な実装であれば妥当かもしれませんが、それはsuper.methodを呼び出すことでより明確になります。スーパーメソッドを直接呼び出す(あなたがやろうとしているように見えます)、混乱します。 OuterClass.this.someMethod()と外部クラスへ

+0

+1「あなたは本当にこのように名前を付ける必要はありませんか? –

6

範囲は:

public class OuterClass { 

    public class InnerClass { 

    public void someMethod(int x) { 
     OuterClass.this.someMethod(x); 
    } 
    } 

    public void someMethod(int x) { 
    System.out.println(x); 
    } 
} 
+0

ああ...スティーブB.は私の前に同じ答えを掲載しました。私はここに例のコードのために私のままにします。 – SingleShot

1

曖昧さの名前を変更することをお勧めします。特に上向きと下向きのアーキテクチャでそれを適用する場合。

+1

クラスがインターフェイスを実装している場合、これは機能しません。 –

関連する問題