【发布时间】:2016-01-05 15:45:18
【问题描述】:
public class OverLoad {
void method(Integer i){
System.out.println("Integer "+i);
}
void method(int i){
System.out.println("in "+i);
}
public static void main(String a[]){
OverLoad m= new OverLoad();
m.method(2); //it calls method(int i) why?
}
}
如果我调用 m.method(3) 它会调用 int 方法,为什么?
如果我调用m.method((Integer)3),那么它将调用 Integer 方法。
默认情况下它进入原始数据类型
【问题讨论】:
-
3是文字原语,因此int签名是完美匹配。 -
你能解释一下吗?
-
如果您传递一个整数,则整数需要自动装箱。所以 int 更接近你传递的参数。当你传递一个 Integer 时,int 方法需要自动拆箱,所以 Integer 更接近你传递的内容。
标签: java