/
Программирование
/
Курс Java
/

Методы с переменным числом параметров

Java: Методы с переменным числом параметров

Большинство методов принимают фиксированное количество аргументов: сколько параметров указано при объявлении, столько значений и нужно передать. Но есть методы, которым можно передать сколько угодно аргументов — от нуля до десятков. Такие методы называют методами с переменным числом параметров (по-английски variadic).

Хороший пример — метод String.join(). Он соединяет строки через разделитель, и количество соединяемых строк может быть любым:

String.join("-", "2024", "01", "15");   // "2024-01-15"
String.join(" ", "Привет", "мир");       // "Привет мир"
String.join(", ", "a", "b", "c", "d");   // "a, b, c, d"

Первый аргумент — это разделитель, а всё, что идёт после него, и есть переменное число строк. В первом вызове их три, во втором — две, в третьем — четыре. Метод сам подстраивается под любое количество аргументов.

Так же устроены методы String.format() и System.out.printf() — им тоже можно передавать разное число аргументов в зависимости от того, сколько значений нужно подставить.

Как это устроено

Когда метод объявляют, переменное число параметров записывают с помощью трёх точек после типа:

// String... values — это и есть переменное число строковых аргументов
public static String join(String separator, String... values) {
    // тут код, который обрабатывает values
}

Запись String... означает «ноль или больше строк». Обязательные параметры (как separator) идут первыми, а переменная часть — всегда последней.

Зачем это нужно

Переменное число параметров делает методы гибкими. Не нужно создавать отдельные методы join2(), join3(), join4() под каждое количество строк — достаточно одного метода, который примет их сколько угодно. Это убирает дублирование и упрощает работу со стандартной библиотекой: огромное число её методов рассчитано именно на переменное число аргументов.

Задание

Реализуйте метод makeSentence(). Внутри него с помощью метода String.join() соберите предложение из отдельных слов Java, is и awesome, разделяя их пробелами. Метод должен вернуть готовую строку.

App.makeSentence(); // => "Java is awesome"

Первым аргументом в String.join() передается разделитель (пробел), а дальше — переменное число слов, которые нужно соединить.

Полезное

Команда проекта находится в телеграм-сообществе. Там можно задать любой вопрос и повлиять на проект

Нашли ошибку? Есть что добавить? Пулреквесты приветствуются