我正在研究 Java Se 7 OCA,但无法弄清楚为什么下面的代码无法编译。main 方法中的 aMethod 调用给出了编译错误,说明方法不明确。在这个重载方法示例中,加宽和装箱之间的优先级规则似乎发生了冲突。
public class Overloading {
public static void main(String[] args) {
Byte i = 5;
byte k = 5;
aMethod(i, k);
}
static void aMethod(byte i, Byte k) {
System.out.println("Inside 1");
}
static void aMethod(byte i, int k) {
System.out.println("Inside 2");
}
static void aMethod(Byte i, Byte k) {
System.out.println("Inside 3 ");
}
}
错误是“ The method aMethod(byte, Byte) is ambiguous for the type Overloading ”。当我注释掉第一种方法时,第二种方法会出现相同的错误。
我的想法是:第一种方法需要拆箱和装箱第二种方法需要拆箱和扩大第三种方法只需要装箱。所以它必须是第三种方法,因为它需要最少的转换,并且它们都有拳击转换。