[英]Method Overloading for Primitive and Object types
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对象(Integer.valueOf(5)),并且应该选择2nd Method。 为什么没有编译时错误?
您为什么期望会有自动装箱? 在搜索适当的方法时,编译器首先检查是否存在适用于纯int类型的方法。 只有找不到这种方法,自动装箱才会起作用。
JLS§18.5.1中描述了此过程。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.