2013-07-31 2 views
0

В настоящее время я пытаюсь получить AsyncTasks, работающий в Android, и нашел то, что я никогда не видел раньше и снова во многих разных учебниках.Какое значение выполняет функция `...` после типа параметра?

Определенные методы в учебниках передают параметры, которые выглядят следующим образом: String... arg0, Integer... values.

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

Что это значит? Почему здесь ...?

ответ

2

Он называется varargs. Он работает для любого типа, если в подписи находится аргумент последнего.

В принципе, любое количество параметров помещается в массив. Это не означает, что он эквивалентен массиву.

Метод, который выглядит следующим образом:

void foo(int bar, Socket baz...) 

будет иметь массив гнезда (в данном примере) называется Baz.

Итак, если мы позвоним foo(32, sSock.accept(), new Socket()), мы найдем массив с двумя объектами Socket.

foo(32, mySocketArray) будет не работа. Однако, если сигнатура является varargs массивов, вы можете передать один или несколько массивов и получить двумерный массив. Например, void bar(int bar, PrintStream[] baz...) может принимать несколько массивов PrintStream и вставлять их в один номер PrintStream[][].

Смежные вопросы