请使用以下代码:
public interface InterfaceA { }
public interface InterfaceB { }
public class Abba implements InterfaceA, InterfaceB { }
public class MainThingy {
public static void main(String[] args) {
Abba abObj = new Abba();
int result = MainThingy.doStuff(abObj);
}
private static int doStuff(InterfaceA param) {
System.out.println("method A");
}
private static int doStuff(InterfaceB param) {
System.out.println("method B");
}
}
由于两个doStuff()方法都将采用Abba参数,因此不清楚将调用哪一个。 Java编译器和/或JVM如何处理这个问题?
答案 0 :(得分:4)
简单。由于模糊引用,此代码无法编译。
$ javac MainThingy.java
MainThingy.java:4: reference to doStuff is ambiguous, both method doStuff(InterfaceA) in MainThingy and method doStuff(InterfaceB) in MainThingy match
MainThingy.doStuff(abObj);
^
1 error