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 回答