6

私が持っているとします:

public class OuterClass() {

  public class InnerClass {
    public void someMethod(int x) {
      someMethod(x);
    }
  }

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

someMethod()外部クラスの と内部クラスの の間のあいまいさを解決するにはどうすればよいsomeMethod()ですか?

4

3 に答える 3

13

で外側を参照しOuterClass.thisたり、 でメソッドを呼び出したりできますOuterClass.this.method()

ただし、設計上のポイントとして、名前を共有することは控えめに言っても混乱を招きます。内部クラスが拡張機能や、たとえば抽象メソッドの具体的な実装を表している場合は合理的かもしれませんが、それは super.method を呼び出すことでより明確になります。スーパー メソッドを直接呼び出すのは (意図しているように見えますが)、混乱を招きます。

于 2009-09-25T18:44:07.370 に答える
6

次のようにして、外側のクラスにスコープを設定しOuterClass.this.someMethod()ます。

public class OuterClass {

  public class InnerClass {

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

  public void someMethod(int x) {
    System.out.println(x);
  }
}
于 2009-09-25T18:45:35.257 に答える
1

あいまいさの名前を変更することは良い習慣です。特に、上向きおよび後向きのアーキテクチャに適用する場合。

于 2012-08-06T17:19:40.523 に答える