@semihal

Почему нельзя использовать примитивные типы в обобщенных классах/методах?

Всем привет.
Мы имеем такой код:
private static <T> T testAutoboxing(T obj)
{
    return obj;
}

public static void main(String[] argv)
{
    System.out.println(Learn.<int>testAutoboxing(5));
}

В ходе стирания типов, int превратиться в Object, а приравнять значение 5 можно к Object с помощью автоупаковки.

Сам вопрос: почему в данном случае запрещается использовать примитивные типы, если у них есть автоупаковка, и почему она не срабатывает?

P.S. документацию читал, книгу читал и знаю чем отличаются ссылочные типы от примитивов. Вопрос может и элементарный, но я новичок со стажем в неделю. Непонятно лишь, почему объявив примитив, компилятор не преобразует его в оболочку, а там и в Object можно запихать, как это происходит с другими ссылочными типами. Или тут принципиальное разделение примитивов от объектов какого-либо класса?
  • Вопрос задан
  • 507 просмотров
Пригласить эксперта
Ответы на вопрос 2
TexxTyRe
@TexxTyRe
Software Developer
В книге лишь ставят перед фактом, что указывать можно лишь ссылочные типы. Если хотите примитивные, то нужно прибегнуть к инкапсуляции.
Ответ написан
Комментировать
В ходе стирания типов, int превратиться в Object,

Нет. Откуда вы это взяли? Для примитивов типы не стираются.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы