Java:外部类和内部类方法之间的名称歧义

2019年9月6日 9点热度 0条评论

假设我有:

public class OuterClass() {

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

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

如何解决外部类的
someMethod()和内部类的
someMethod()之间的歧义?

解决方案如下:

您可以使用OuterClass.this引用外部,或使用OuterClass.this.method()调用方法。

但是,从设计的 Angular 来看,至少可以说共享名称令人困惑。如果内部类表示扩展或抽象方法的具体实现,这可能是合理的,但是通过调用super.method可以更清楚。直接调用一个 super 方法(看起来像您打算做的那样)令人困惑。