相关疑难解决方法(0)

为什么以下类型在java中是可恢复和不可恢复的?

在计算中,具体化意味着一种类型的显式表示 - 即运行时类型信息.

oracle教程说,

可重新类型是类型信息在运行时完全可用的类型.这包括基元,非泛型类型,原始类型和未绑定通配符的调用.

不可再生类型是在编译时通过类型擦除删除信息的类型 - 未定义为无界通配符的泛型类型的调用.

如果类型是以下之一,则该类型是可恢复的:

  1. 一个原始类型(如int)//理解
  2. 阿非参数化类或接口类型(例如Number,StringRunnable)//为什么
  3. 一个参数化的类型,其中所有类型的参数是无界的通配符(例如List<?>,ArrayList<?>Map<?, ?>)//为什么
  4. 原始类型(如List,ArrayListMap)//为什么
  5. 阵列,其组件类型为reifiable(如int[],Number[],List<?>[],List[],或int[][])//为什么

如果类型是以下之一,则该类型不可再生:

  1. 类型变量(例如T)//为什么
  2. 一个参数化的类型与实际的参数(如List<Number>,ArrayList<String>Map<String, Integer>)//为什么
  3. 具有绑定(例如List<? extends Number>Comparable<? super String>)//为什么的参数化类型

为什么2,3,4,5是可以再生的,6,7,8是不可再生的?

java generics type-erasure

27
推荐指数
4
解决办法
7419
查看次数

标签 统计

generics ×1

java ×1

type-erasure ×1