Часто разработчики сталкиваются с задачей передать массив в качестве аргументов методу с переменными аргументами в Java. При этом возникает проблема: массив воспринимается как один объект, а не как набор отдельных элементов.
Приведем пример. Предположим, есть следующий метод:
public void printAll(Object... args) { for (Object arg : args) { System.out.println(arg); } }
И массив объектов, который нужно передать этому методу:
Object[] myArray = new Object[]{"one", "two", "three"};
Если передать этот массив методу printAll(), то он будет воспринят как один объект, а не как три разных элемента.
printAll(myArray);
На экран выведется информация об одном объекте, а не о трех разных.
Решение проблемы
В Java для решения этой проблемы предусмотрена специальная конструкция. Если перед массивом поставить троеточие, то он будет распакован, и каждый его элемент будет передан в метод как отдельный аргумент.
printAll(myArray...);
Теперь метод printAll() получит три разных аргумента, и на экран будут выведены все три элемента массива.
Но что делать, если в метод нужно передать не только массив, но и другие аргументы? В этом случае можно использовать такую конструкцию:
printAll("Extra argument", myArray...);
«Extra argument» будет передан в метод как первый аргумент, а затем будут переданы все элементы массива.
Таким образом, в Java предусмотрена возможность передачи массива в метод с переменными аргументами так, чтобы каждый элемент массива передавался как отдельный аргумент.
Добавить комментарий