假设我有:
public class OuterClass() {
public class InnerClass {
public void someMethod(int x) {
someMethod(x);
}
}
public void someMethod(int x) {
System.out.println(x);
}
}
如何解决外部类的someMethod()
与内部类的someMethod()
之间的歧义?
答案 0 :(得分:13)
您可以使用OuterClass.this
来引用外部,或使用OuterClass.this.method()
调用该方法。
然而,作为一个设计点,至少可以说,分享名称令人困惑。如果内部类表示扩展,或者说是抽象方法的具体实现,则可能是合理的,但通过调用super.method可以更清楚。直接调用超级方法(因为看起来你打算做什么?),令人困惑。
答案 1 :(得分: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);
}
}
答案 2 :(得分:1)
重命名歧义是一种很好的做法。特别是如果你在向上和向后的架构中应用它。