Почему это один не работает:Дженерики синтаксис: классы против примитивных типов данных
ArrayList<LinkedList<int>>
где это делает:
ArrayList<LinkedList<Integer>>
???
Почему это один не работает:Дженерики синтаксис: классы против примитивных типов данных
ArrayList<LinkedList<int>>
где это делает:
ArrayList<LinkedList<Integer>>
???
Аргумент в <>
должен быть объектом, поскольку эти классы могут содержать только объекты.
int
- это примитивный тип, где Integer
- это просто класс обертки для этого типа, поэтому Integer
- это тот, который будет работать.
да, я получил это :) i thoght, это действительно работает для LinkedList
Поскольку Java может использовать только классы (а не примитивные типы) и массивы (также массивы для примитивов) для дженериков (между <
и >
).
List<Integer> list;
Это также является причиной, почему существуют классы-оболочки для примитивных типов:
int -> Integer
boolean -> Boolean
double -> Double
byte -> Byte
etc...
он будет принимать примитивные массивы. – Tedil
Согласен, но недавно в интервью мне было предложено написать общий класс, который может принимать как примитивный, так и объект? Я не смог ответить на этот вопрос. Мне было интересно, вопрос на первом месте. – plzdontkillme
Возможно, интервьюер искал 'public MyClass
becuase определения является LinkedList<T>
и только Object
может быть здесь <T>
.
int
примитивный тип так LinkedList<int> - compile error
Integer
является объект LinkedList <Integer> - right one
Пожалуйста, исправьте опечатку в вашем вопросе. Синтаксис синтаксиса ->, у меня пока нет достаточной репутации для этого. –
На этом сайте вы должны принять ответ, нажав на галочку, чтобы он стал зеленым. –