Учитывая ограниченное использование переменных аргументов в Java, в чем их преимущество? - PullRequest
1 голос
/ 26 мая 2011

Я работаю в C (++), и мой основной интерес к Java - разработка Android. Для меня это кажется очевидным вопросом, но я не нашел нигде адресованного (и я сделал search stackoverflow и Google его). То, что я нашел, было много комментариев, таких как:

public String foo(String key, Object[] parameters) {..}

and

public String foo(String key, Object... parameters) {..}

are equal

Фактически, документы Java для «Varargs» явно заявляют: «Три периода после типа последнего параметра указывают, что последний аргумент может быть передан как массив или как последовательность аргументов»

Из того же источника чаще всего указывается, что у varargs есть "Важное использование в основных API-интерфейсах, включая отражение, форматирование сообщений и новое средство printf."

Учитывая, что Java является объектно-ориентированным, включает сборку мусора и поддерживает динамические массивы И Java-переменные ограничены одним типом, в чем преимущество? (В отличие, например, от C, где они реализуют дополнительные функции.)

Ответы [ 2 ]

9 голосов
/ 26 мая 2011

Простота использования. Ни больше, ни меньше.

printf( "...", x, y, z );

эквивалентно

printf( "...", new String[] { x, y, z } );

За исключением того, что легче писать и читать.

0 голосов
/ 26 мая 2011

До varargs:

log.debug( "foo is " + foo + ", bar is " + bar );

После varargs:

log.debug( "foo is %s, bar is %s", foo, bar );

Вторая версия намного эффективнее.

...