的Java:外部和内部类方法之间的模糊名称
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);
}
}
唉......史蒂夫·B在我之前发布了同样的答案。示例代码我将在此处留下。 – SingleShot 2009-09-25 18:47:14
重命名不确定性是一个很好的做法。特别是如果你在向上和向后的架构中应用它。
如果类正在实现一个接口,这将不起作用。 – 2012-12-07 19:16:33
+1对于“你不需要这样命名,是吗?” – 2009-09-25 20:03:33