在计算中,具体化意味着一种类型的显式表示 - 即运行时类型信息.
oracle教程说,
可重新类型是类型信息在运行时完全可用的类型.这包括基元,非泛型类型,原始类型和未绑定通配符的调用.
不可再生类型是在编译时通过类型擦除删除信息的类型 - 未定义为无界通配符的泛型类型的调用.
如果类型是以下之一,则该类型是可恢复的:
- 一个原始类型(如
int)//理解- 阿非参数化类或接口类型(例如
Number,String或Runnable)//为什么- 一个参数化的类型,其中所有类型的参数是无界的通配符(例如
List<?>,ArrayList<?>或Map<?, ?>)//为什么- 原始类型(如
List,ArrayList或Map)//为什么- 阵列,其组件类型为reifiable(如
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是不可再生的?