如果我错了,请纠正我。 Boxing + Varargs比Boxing + Widening更受欢迎吗?
我在site找到了另一种方式。
答案 0 :(得分:2)
第一阶段(§15.12.2.2)执行重载解析而不允许装箱或拆箱转换,或使用变量arity方法调用。如果在此阶段没有找到适用的方法,则处理继续到第二阶段。
第二阶段(§15.12.2.3)在允许装箱和拆箱的同时执行重载解析,但仍然排除使用变量arity方法调用。如果在此阶段没有找到适用的方法,则处理继续到第三阶段。
第三阶段(§15.12.2.4)允许重载与变量arity方法,装箱和拆箱相结合。
总结:拓宽>拳击和拆箱>可变参数
答案 1 :(得分:0)
拳击+加宽比Boxing + Varargs更受欢迎。一个简单的测试就会证实这一点。
public static void main(String[] args) {
int i = 2;
doX(2);
}
static void doX(Object i){
System.out.println("object...");
}
static void doX(Integer... i){
System.out.println("int...");
}
打印:
object...
编辑:抱歉,我的不好。我已经纠正了代码。没注意到我输入了“对象......”
答案 2 :(得分:0)
Boxing + Widening
优于Boxing + Varargs
。我已经改变了约翰的例子来证明这一点:
public static void main(String[] args) {
int i = 2;
doX(i);
}
static void doX(Object i) {
System.out.println("Object");
}
static void doX(Integer... i) {
System.out.println("Integer...");
}
打印
Object