Можно создать дубликат:
varargs and the '…' argument
Java, 3 dots in parametersЧто такое "String ..." в java?
Я видел это определение в моем андроида файл Java. Он выглядит так же, как String []. Разве они разные? Спасибо.
Можно создать дубликат:
varargs and the '…' argument
Java, 3 dots in parametersЧто такое "String ..." в java?
Я видел это определение в моем андроида файл Java. Он выглядит так же, как String []. Разве они разные? Спасибо.
Это синтаксис для написания элементов массива в качестве параметра
, например:
public String first (String... values) {
return values[0];
}
Тогда вы можете назвать этот метод с first("4","2","5","67")
JavaCompiler создаст массив из параметры сами по себе.
первый ("4", "2", "5", "67"), не первый (4,2,5,67) –
true. По одной причине я думал о целых числах. –
varags
. Если сигнатурой метода является method(Param param, String... x)
, то потребуется один тип объекта Param
и любое число количество объектов String.
Есть пара, если не интересные вещи о нем:
Это ничего особенного. Это просто sugared массив. Итак, method(MyObject... o)
такой же, как method(MyObject[] o)
.
Vararg должен быть последним параметром в списке аргументов.
Есть эта забавная вещь, которая немного меня укусила. method(MyObject... o)
можно назвать method()
без какой-либо ошибки компиляции. Java будет внутренне конвертировать вызов no-arg в method(new MyObject[0])
. Поэтому будьте в курсе этого.
Это для определения метода с variable number of arguments.
Это 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.
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");
http://docs.oracle.com/javase/1.5.0/docs/guide/language/varargs.html – assylias
и HTTP: // StackOverflow. com/questions/1656901/varargs-and-the-argument – assylias
... или любой хороший учебник по Java, написанный за последние 5 лет или около того. –