再探Java泛型

  1. 泛型类
  2. 泛型方法
  3. 边界符extends,一般< T extends ConcreteType >用于支持通用T类型的方法调用,方法体中会用到T对象,而< ? extends Concrete >通配符限制类型是用来解决方法参数传递过程中泛型的不可协变性,也就是List类型的参数不接受List参数,但是List<? extends ParentClass>可以接受List参数
  4. 通配符类型的PECS原则(Producer Extends, Consumer Super)
    • Producer Extends, 指的是<? extends ConcreteType>,利用它,我们可以从list中get元素,而不能添加元素。原因是我们可以在取出的时候通过向上转型,而加入的时候却不能确认具体的类型是什么,我们不可能下转型或者兄弟类型转型。
    • Consumer Super, 指的是<? super ConcreteType>,我们可以用它向list里面添加元素,而不能获取元素,原因是我们添加的东西可以向上转型,而获取的东西却不能向下转型。
  5. 类型擦除实现导致的问题
    • 不能创建泛型数组
    • 不能使用new关键字创建泛型类,可以通过反射实现
    • 不能使用泛型来判断instanceof
  6. 参考文档
坚持原创技术分享,您的支持将鼓励我继续创作!