Java обрабатывает обобщения с помощью стирания типов (type erasure).
При компиляции информация об обобщенных типах удаляется. Это означает, что в байт-коде класс ArrayList<String>
и ArrayList<Integer>
будут выглядеть одинаково - как ArrayList
. Вместо обобщенных параметров компилятор подставляет Object
или верхнюю границу ограниченного типа. В местах использования типов компилятор вставляет неявные приведения типов (casts).
Преимущества стирания типов:
Недостатки стирания типов:
ArrayList<int>
недопустимо. Приходится использовать их обертки (ArrayList<Integer>
).new T[size]
) или проверкаJava обрабатывает обобщения с помощью стирания типов (type erasure).
При компиляции информация об обобщенных типах удаляется. Это означает, что в байт-коде класс ArrayList<String>
и ArrayList<Integer>
будут выглядеть одинаково - как ArrayList
. Вместо обобщенных параметров компилятор подставляет Object
или верхнюю границу ограниченного типа. В местах использования типов компилятор вставляет неявные приведения типов (casts).
Преимущества стирания типов:
Недостатки стирания типов:
ArrayList<int>
недопустимо. Приходится использовать их обертки (ArrayList<Integer>
).new T[size]
) или проверкаRegister or sign in to get access to full answers for all questions from the question bank.