04 泛型中extends和super的区别是什么

vvEcho 2024-01-20 14:08:36
Categories: Tags:
  1. extends & super
    extends是继承的意思用在子类继承父类,可以理解为一个关键字,而super是子类构造方法继承父类构造方法的一个方法;还有在泛型的应用中,他们针对泛型的边界问题代表的含义完全相反,extends T表示泛型的上边界是T,super T代表泛型的下边界是T;

  2. 类型擦除
    Java中的泛型实现基于类型擦除,这意味着在编译后泛型的具体类型信息被擦除,只保留原始类型。这种机制限制了泛型的协变性,因为运行时系统无法区分具体类型

  3. 边界问题
    通过使用通配符,可以在不改变泛型类型结构的前提下,实现一定程度的协变和逆变。例如,List<? extends Fruit>可以接收任何Fruit子类的列表,而List<? super Apple>可以接收Apple及其任何父类的列表