public class OverloadTest {
public static void main(String ar[]){
OverloadTest t = new OverloadTest();
t.add(5,5);
}
// 1st method
public void add(int i , int j){
System.out.println("In Primitive type" + (i+j))
}
// 2nd method
public void add(Integer i , Integer j){
System.out.println("In Object type" + (i+j))
}
}
此代码完美无缺。我想要了解不应该有编译时错误,因为5将被自动装箱到整数对象(Integer.valueOf(5))并且应该选择第二种方法。为什么没有编译时错误?
答案 0 :(得分:3)
为什么你会期望有自动装箱?在搜索适当的方法时,编译器首先检查是否有适用于plain int类型的方法。只有找不到这样的方法才能发挥自动装箱作用。
此过程在JLS §18.5.1。
中有所描述