集合中的泛型
- 只有APHero可以放入
ArrayList<APHero> heros =
new
ArrayList<APHero>();
heros.add(
new
APHero());
- APHero和ADHero都可以放入
ArrayList<Hero> heros =
new
ArrayList<Hero>();
泛型类
- 定义
public
class
MyStack<T>{
LinkedList<T> values =
new
LinkedList<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<?>:任意泛型,可取出,不可设置内容
转型
- 子类泛型不能转换为父类泛型
- 父类泛型不能转换为子类泛型