次のコードを取ります。
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はこれをどのように処理しますか?