В java каждая функция с (X ...) сигнатурой принимает массив X в качестве параметра.
В первом примере вы получаете предупреждение о том, что вы передаете массив целых чисел как объект vararg без приведения. Java достаточно умен, чтобы вы могли передать его как Object [] вместо одного Object. Если вы добавите приведение к объекту [], предупреждение исчезнет.
Во втором примере массив рассматривается как ПЕРВЫЙ vararg, так как каждый массив является объектом. Он не может быть передан как массив объектов, потому что это массив примитивов.
Массивы любого типа являются объектами, поскольку вы можете проверить выполнение этого фрагмента кода
public class Test{
public static void test(Object a) {
System.out.println("ok");
}
public static void main(String args[]){
int[] i = {1,2,3,4};
test(i);
}
}
Он печатает "ок", что означает, что int [] является объектом.
~