tgoop.com/BookJava/1502
Last Update:
Как объявить переменное количество аргументов метода?
Для этого используется аргумент-массив. В нем может находиться любое количество элементов. Еще с Java 5 для этого случая добавился синтаксический сахар: Variable-length argument (vararg). Три точки ...
ставятся между типом и именем переменной, и становится можно передать любое количество аргументов, не упаковывая их в массив.
На уровне байткода применение массива и варарга не отличаются: vararg-параметр Foo...
превращается в параметр-массив Foo[]
, на этапе вызова подставляется неявное инстанцирование и заполнение массива.
Чтобы избежать неоднозначностей, на vararg наложено ограничение: им может быть только один последний аргумент.
Vararg, как массив, может быть пустым. Иногда это приводит к неочевидному поведению. Допустим, имеем две перегрузки метода с аргументами int...
и float...
. Вызов такого метода без параметров попадает в вариант с int
, как с более специфичным типом. Наличие же перегрузки с несовместимыми типами, например int...
и boolean...
, приводит при вызове к ошибке компиляции «Ambiguous method call».
Когда типом варарга используется generic-параметр, возникает warning «Possible heap pollution from parameterized vararg type». Вам нужно убедиться, что вы понимаете в чем этот риск, что ваш код не приводит к heap pollution, и уведомить об этом компилятор аннотацией @SafeVarargs
.
#Язык
BY Библиотека Java разработчика
Share with your friend now:
tgoop.com/BookJava/1502