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

Jak*_*ake 6 java oop ambiguity inner-classes outer-classes

假设我有:

public class OuterClass() {

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

  public void someMethod(int x) {
    System.out.println(x);
  }
}
Run Code Online (Sandbox Code Playgroud)

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

Ste*_* B. 13

您可以参考外部with OuterClass.this,或调用方法OuterClass.this.method().

然而,作为一个设计点,至少可以说,共享名称令人困惑.如果内部类表示扩展,或者说是抽象方法的具体实现,则可能是合理的,但通过调用super.method可以更清楚.直接调用超级方法(因为看起来你打算做什么?),令人困惑.


Sin*_*hot 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);
  }
}
Run Code Online (Sandbox Code Playgroud)