使用类型擦除无法在运行时知道确切的类型信息:

image.png

引入类型标签来对擦除进行补偿 (显示传递 Class):

image.png
image.png

15.8.1 创建类型实例

能够编译, 但是有运行时异常, 因为 ClassAsFactory 中 Integer 没有默认构造器:

  • kind.newInstance(): Integer 没有默认构造器

image.png
image.png

使用工厂类:

  • > 是边界

image.png

这里的实现给出了如何在运行时获取类型变量 T 的实例.

使用模板方法设计模式:

  • 父类声明抽象接口
  • 子类负责实现

image.png
image.png

15.8.2 泛型数组

运行时是 Object[] 类型.

使用类型标记:

image.png
image.png