Dlaczego to działa:Initialize List <> z Arrays.asList
String[] array = {"a", "b", "c"};
List<String> list = Arrays.asList(array);
ale to nie:
List<String> list = Arrays.asList({"a","b","c"});
Dlaczego to działa:Initialize List <> z Arrays.asList
String[] array = {"a", "b", "c"};
List<String> list = Arrays.asList(array);
ale to nie:
List<String> list = Arrays.asList({"a","b","c"});
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.
Można spróbować
List<String> list = Arrays.asList(new String[] {"a","b","c"});
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 Arrays
asList
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");
Nie można zrobić 'Arrays.asList ("a", "b", "c");', która jest krótsza i bardziej podobny do pierwotnego pytania PO za. –
To, co powiedział Thomas, jest nadal aktualne i nie zasługuje na awans. – Jeshurun
Nie, to co powiedział to "Ty * masz * pisać", co jest nieprawdą, więc tak, to * nie * zasługuje na pochwałę. –