假设我有:
public class OuterClass() {
public class InnerClass {
public void someMethod(int x) {
someMethod(x);
}
}
public void someMethod(int x) {
System.out.println(x);
}
}
如何解决someMethod()
外部类和someMethod()
内部类之间的歧义?
假设我有:
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);
}
}
重命名歧义是一种很好的做法。特别是如果你将它应用在向上和向后的架构中。