Ответ 1
Причина проста: параметр переменной arity - это просто массив массивов старой школы с некоторыми дополнительными метаданными, которые сообщают компилятору предоставить некоторый синтаксический сахар (а именно, он позволяет создавать неявные массивы).
Итак, с точки зрения JVM Object...
почти такая же, как Object[]
. Для создания коллекций потребуется более инвазивное изменение JVM (на сегодняшний день не имеющее явной поддержки коллекций).
Обратите внимание, что если вы хотите поддерживать оба способа, то, вероятно, лучше использовать метод на основе коллекции:
public void frobnicate(Object... args) {
frobnicate(Arrays.asList(args));
}
public void frobnicate(Iterable<Object> args) {
// do stuff
}
Причиной этого является то, что использование Arrays.asList()
обычно более дешевое, чем Collection.toArray()
(потому что оно создает простую оболочку).