次のコードを想定します。
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を含む1次元配列を持つことが期待されます。したがって、期待される出力は一目でわかるはずです。
false
true
サプライズ!実際の出力は次のとおりです。
true
true
この投稿の更新:
実際、このケースがVar-argsのルールに従っていることに気付いていないので、これは良い質問ではありません。
要約すると、Var-argsが引数である場合でも、int[]配列をInteger[]に自動ボックス化することはできません。例外的な扱いはありません。