В вычислениях овеществление стало означать явное представление типа, то есть информации типа времени выполнения.
Подтверждаемый тип - это тип, информация о типе которого полностью доступна во время выполнения. Сюда входят примитивы, не общие типы, типы сырья, и вызовы несвязанных подстановочных знаков.
Невосстанавливаемые типы - это типы, в которых информация удалена компиляция по типу стирания - вызовы общих типов, которые не определены как неограниченные подстановочные знаки.
Тип можно отменить, если он является одним из следующих:
- Примитивный тип (например,
int
)//понял- Непараметрированный класс или тип интерфейса (например,
Number
,String
илиRunnable
)//почему- Параметрированный тип, в котором все аргументы типа являются неограниченными подстановочными знаками (такими как
List<?>
,ArrayList<?>
илиMap<?, ?>
)//почему- Необработанный тип (например,
List
,ArrayList
илиMap
)//почему- Массив, тип компонента которого можно повторно идентифицировать (например,
int[]
,Number[]
,List<?>[]
,List[]
илиint[][]
)//почему
Тип не может быть повторно идентифицирован, если он является одним из следующих:
- Переменная типа (например,
T
)//почему- Параметрированный тип с фактическими параметрами (например,
List<Number>
,ArrayList<String>
илиMap<String, Integer>
)//почему- Параметрированный тип с привязкой (например,
List<? extends Number>
илиComparable<? super String>
)//почему
Почему 2,3,4,5 можно повторно использовать и 6,7,8 в качестве невосстанавливаемых?