繁体   English   中英

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

[英]Java: Name ambiguity between outer and inner class methods

假设我有:

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()调用该方法。

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

使用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);
  }
}

重命名歧义是一种很好的做法。 特别是如果你在向上和向后的架构中应用它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM