[Java] 泛型

集合中的泛型

  • 只有APHero可以放入
    • ArrayList<APHero> heros = newArrayList<APHero>();
    • heros.add(newAPHero());
  • APHero和ADHero都可以放入
    • ArrayList<Hero> heros = new ArrayList<Hero>();

泛型类

  • 定义
    • public class MyStack<T>{
    •  LinkedList<T> values = newLinkedList<T>();
    •  public void push(T t) {...}
    • }
  • 使用
    •  MyStack<Hero> heroStack = new MyStack<>();
    •  heroStack.push(new Hero());

通配符

  • 解决泛型类对象的引用传递问题
  • ArrayList heroList<? super Hero>:Hero泛型或者其父类泛型(下限),可放入,不可取出
  • ArrayList heroList<? extends Hero>:Hero泛型或者其子类泛型(上限),可取出,不可放入
  • ArrayList heroList<?>:任意泛型,可取出,不可设置内容

转型

  • 子类泛型不能转换为父类泛型
  • 父类泛型不能转换为子类泛型

原文地址:https://www.cnblogs.com/cxc1357/p/12453760.html