假设这段代码:
public class Test{
public static void main(String[] args) {
Test.testInt(new int[]{2,3});
Test.testInteger(new Integer[]{2,3});
}
public static void testInt(Object... elements){
System.out.println(elements[0] instanceof int[]);
}
public static void testInteger(Object... elements){
System.out.println(elements[0] instanceof Integer);
}
}
在这两种情况下,都期望有一个包含 2 和 3 的一维数组。因此,乍一看,预期的输出应该是:
false
true
惊喜!真正的输出是:
true
true
更新到这篇文章:
实际上,这不是一个好问题,因为我还没有意识到这种情况符合 Var-args 规则。
总而言之,即使 Var-args 是参数,int[] 数组也不能自动装箱为 Integer[];没有特殊待遇。