2012-03-15 3 views
6

Можно создать дубликат:
varargs and the '…' argument
Java, 3 dots in parametersЧто такое "String ..." в java?

Я видел это определение в моем андроида файл Java. Он выглядит так же, как String []. Разве они разные? Спасибо.

+10

http://docs.oracle.com/javase/1.5.0/docs/guide/language/varargs.html – assylias

+0

и HTTP: // StackOverflow. com/questions/1656901/varargs-and-the-argument – assylias

+0

... или любой хороший учебник по Java, написанный за последние 5 лет или около того. –

ответ

5

Это синтаксис для написания элементов массива в качестве параметра

, например:

public String first (String... values) { 
    return values[0]; 
} 

Тогда вы можете назвать этот метод с first("4","2","5","67")

JavaCompiler создаст массив из параметры сами по себе.

+0

первый ("4", "2", "5", "67"), не первый (4,2,5,67) –

+0

true. По одной причине я думал о целых числах. –

13

varags. Если сигнатурой метода является method(Param param, String... x), то потребуется один тип объекта Param и любое число количество объектов String.

Есть пара, если не интересные вещи о нем:

  1. Это ничего особенного. Это просто sugared массив. Итак, method(MyObject... o) такой же, как method(MyObject[] o).

  2. Vararg должен быть последним параметром в списке аргументов.

  3. Есть эта забавная вещь, которая немного меня укусила. method(MyObject... o) можно назвать method() без какой-либо ошибки компиляции. Java будет внутренне конвертировать вызов no-arg в method(new MyObject[0]). Поэтому будьте в курсе этого.

1

Это vararg, переменное количество аргументов. В теле метода вы рассматриваете его как String [], но когда вы вызываете метод, вы можете либо выбрать строку String [], либо просто перечислить ваши значения.

void foo(String... blah) { } 

void bar() { 
    String[] a = { "hello", "world" }; 
    foo(a); // call with String[] 
    foo("hello", "world"); // or simply enumerate items 
} 

Была введена с Java 5.

0

String строкового типа. String[] представляет собой массив строк.

String ... является синтаксическим сахаром с названием эллипсиса, введенным в java 1.5 и взятым из C. Он может использоваться в определениях методов и фактически такой же, как массив с только одним отличием. Если метод определен как:

public void foo(String[] arg){}

вы должны передать массив к нему:

foo(new String[] {"a", "b"});

Если метод определен как:

public void foo(String arg){}

Вы можете позвонить это либо

foo(new String[] {"a", "b"});

или

foo("a", "b");

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