Почему этот не работает:
ArrayList<LinkedList<int>>
где это делает:
ArrayList<LinkedList<Integer>>
???
Почему этот не работает:
ArrayList<LinkedList<int>>
где это делает:
ArrayList<LinkedList<Integer>>
???
Потому что Java может использовать только классы (а не примитивные типы) и массивы (также массивы для примитивов) для дженериков (между <
и >
).
List<Integer> list;
Это также причина, по которой существуют классы-оболочки для примитивных типов:
int -> Integer
boolean -> Boolean
double -> Double
byte -> Byte
etc...
Аргумент в <>
должен быть объектом, потому что эти классы могут содержать только объекты.
int
— это примитивный тип, тогда как Integer
— это просто класс-оболочка для этого типа, поэтому Integer
— это тот, который будет работать.
потому что определение LinkedList< T >
и здесь может быть только Object
< T >
.
int
является примитивным типом, поэтому LinkedList< int > - compile error
Integer
является объектом LinkedList < Integer > - right one
public MyClass<T extends Number>
? Это не сработает для логических значений. 18.08.2014