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() передается разделитель (пробел), а дальше — переменное число слов, которые нужно соединить.
Полезное
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() передается разделитель (пробел), а дальше — переменное число слов, которые нужно соединить.
Полезное
Ваше упражнение проверяется по этим тестам
import static org.assertj.core.api.Assertions.assertThat;
class AppTest {
public static void main(String[] args) {
var actual = App.makeSentence();
System.out.println(actual);
assertThat(actual).isEqualTo("Java is awesome");
}
}Решение учителя откроется через:
20:00
