Как преобразовать объект List <String>в String ... Object - PullRequest
3 голосов
/ 05 января 2012

Недавно я наткнулся на API, и он использовал какой-то параметр

void doSomething(final String... olah) {
}

Я никогда не видел ничего подобного.

У меня есть List<String> сейчас, и я хочу вызвать эту функцию с моим списком строк. Как мне этого добиться?

Ответы [ 5 ]

10 голосов
/ 05 января 2012

Добро пожаловать в современную Java. Этот синтаксис в Java называется varargs.

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

Вы можете думать об этом как

void doSomething(final String[] olaf) {

}

Единственное отличие состоит в том, что, как следует из названия, это аргументы переменной длины. Вы можете вызвать его с 0 для любого числа или аргументов. Таким образом, doSomething("foo"), doSomething("foo", "bar"), doSomething("foo", "bar", "baz") все поддерживаются.

Однако, чтобы вызвать этот метод с аргументом List, сначала нужно преобразовать список в String[].

Что-то вроде этого подойдет:

List<String> myList; // Hope you're acquainted with generics?

doSomething(myList.toArray(new String[myList.size()]));
3 голосов
/ 05 января 2012

String... - это не что иное, как String[].Так что просто переберите список и создайте массив String и передайте этот массив или используйте более простой способ .toArray(new String[collection.size()]) метода класса Collection.

2 голосов
/ 05 января 2012

String ... - это то же самое, что String [].

Вы хотите вызвать что-то вроде:

String[] listArr = list.toArray( new String[ list.size() ] );
doSomething( listArr );
1 голос
/ 05 января 2012

См. Следующее для преобразования списка строк в массив строк

List<String> listOfString = new ArrayList<String>();
        listOfString.add("sunil");
        listOfString.add("sahoo");
        String[] strResult=new String[listOfString.size()];
        strResult =  listOfString.toArray(strResult);
1 голос
/ 05 января 2012

Используйте .toArray(new String[0]). Метод toArray () превратит ваш список строк (java.util.List<String>) в массив из String объектов.

Синтаксис '...' - это механизм, допускающий переменное количество параметров. Вы можете передать что-то вроде doSomething("abc", "def", "ghi") или doSomething("abc") или doSomething(new String[] { "abc", "def", "ghi" }). Функция будет видеть их все как массивы (соответственно как длина 3, 1 и 3).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...