2012-05-23 14 views

Odpowiedz

54

Jest to krótki ręka dostępna tylko przy konstruowaniu i przypisywanie tablicę.

String[] array = {"a", "b", "c"}; 

Można to zrobić, choć:

List<String> list = Arrays.asList("a","b","c"); 

Jak asList może trwać "vararg" argumenty.

11

Można spróbować

List<String> list = Arrays.asList(new String[] {"a","b","c"}); 
+1

Nie można zrobić 'Arrays.asList ("a", "b", "c");', która jest krótsza i bardziej podobny do pierwotnego pytania PO za. –

+6

To, co powiedział Thomas, jest nadal aktualne i nie zasługuje na awans. – Jeshurun

+0

Nie, to co powiedział to "Ty * masz * pisać", co jest nieprawdą, więc tak, to * nie * zasługuje na pochwałę. –

11

Twoje pytanie jest dlaczego ktoś pracuje, a drugi nie, prawda?

Cóż, powodem jest to, że {"a","b","c"}nie jest prawidłowym wyrażeniem Java, a zatem kompilator nie może go zaakceptować.

To, co sugerujesz, to że chcesz przekazać inicjator tablicy bez dostarczania full array creation expression (JLS 15.10).

Poprawne wyrażenia tworzenie tablicy są, jak inni zwrócili uwagę:

String[] array = {"a", "b", "c"}; 

Jak stwierdzono w JLS 10.6 Array Initializers lub

String[] array = new String[]{"a", "b", "c"}; 

Jak stwierdzono w JLS 15.10 Array Creation Expressions.

Ten drugi jest przydatny do wstawiania, więc możesz przekazać go zamiast zmiennej tablicy bezpośrednio.

Ponieważ metoda ArraysasList wykorzystuje zmienne argumentów i zmiennych argumentów wyrażenia są odwzorowywane na tablicach, można też przekazać tablicę inline jak w:

List<String> list = Arrays.asList(new String[]{"a", "b", "c"}); 

Albo po prostu przekazać zmienne argumentów, które będą automatycznie odwzorowywane na tablicy:

List<String> list = Arrays.asList("a","b","c"); 
Powiązane problemy