Java - 处理兼容参数的方法覆盖如何?

时间:2012-05-10 03:52:47

标签: java methods overloading

请使用以下代码:

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如何处理这个问题?

1 个答案:

答案 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