В чем разница между List
, List >
, List
, ] List
и List
?
Список
: это необработанный тип, поэтому не типизированный
. Он будет генерировать ошибку времени выполнения только в том случае, если приведение неверно. Нам нужна ошибка времени компиляции при плохом приведении. Не рекомендуется использовать.
Список >
- неограниченный подстановочный знак. Но я не уверен, для чего это? Я могу распечатать список >
без проблем:
public static void test(List<?> list){
System.out.println(list); // Works
}
Почему я не могу добавить элементы в список >
?
public static void test(List<?> list){
list.add(new Long(2)); // Error
list.add("2"); // Error
System.out.println(list);
}
public static void test(List<T> list){ // T cannot be resolved
System.out.println(list);
}
Я не понимаю этого синтаксиса. Я видел что-то подобное, и это работает:
public <T> T[] toArray(T[] a){
return a;
}
Иногда я вижу
, или
, или
,
. Все ли они одинаковы или представляют собой нечто иное?
Выдает ошибку «Метод test (List
не применим для аргумента List
»:
public static void test(List<Object> list){
System.out.println(list);
}
Если я попробуйте это, и я получил «Невозможно преобразовать из List
в List
»:
test((List<Object>) names);
Я запутался. Строка
является подклассом объекта
, так почему же List
не является подклассом List
?