Вопрос по arrays, java, parameters, arguments – Что обозначают три точки (…), когда они используются как часть параметров при определении метода? [Дубликат]

16

This question already has an answer here:

Java, 3 dots in parameters 9 answers

Что обозначают три точки (...), когда они используются как часть параметров при определении метода?

Кроме того, есть ли какой-либо программный термин для обозначения этих трех точек?

Я заметил в примере кода:

public void method1 (Animal... animal) {
// Code
}

И этот метод был вызван из 2 мест. Аргументы, передаваемые во время вызова, были разными в обоих сценариях:

Array of objects is passed as an argument to method1(Animal...)

Object of class Animal passed as an argument to method1(Animal...)

Итак, похоже ли это на то, что если вы не уверены, будете ли вы передавать в метод в качестве аргумента метод одного элемента массива или всего массива, вы используете 3 точки в качестве части параметров в определении метода?

Также, пожалуйста, дайте мне знать, если есть какой-либо программный термин для обозначения этих трех точек.

Ваш Ответ

3   ответа
4

Это означает, что метод принимает массив этого типа объектовbutэтот массив создается автоматически, когда вы передаете несколько объектов этого типа через запятую.

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

16

Это называется varargs.

Это означает, что вы можете передать столько типов, сколько захотите.

Это на самом деле переводит его вmethod1(Animal[] a) и вы ссылаетесь на них какa[1] как и любой другой массив.

Если у меня есть следующее

Cat whiskers = new Cat();
Dog rufus = new Dog();
Dolphin flipper = new Dolphin();

method1(whiskers, rufus, flipper); // okay!
method1(rufus); // okay!
method1(); // okay!
method1(flipper,new Parakeet()); // okay!
1

Это означает, что ноль или более объектов String (или их массив) могут быть переданы в качестве параметра (ов) для этой функции.

Может быть:

x("foo", "bar");
x("foo", "bar", "baz");

Похожие вопросы