Java 泛型转型
class Person{
public String name;
}
class Hero extends Person{
}
class ADHero extends Hero{
}
class APHero extends Hero{
}
- 泛型
import java.util.ArrayList;
public class Test{
public static void main(String [] args){
//方式一
ArrayList<Hero> list1 = new ArrayList<Hero> ();
//方式二
ArrayList<Hero> list2 = new ArrayList<>();
list1.add(new ADHero()); //可以放入Hero的子类
}
}
通配符
- <? extends T>
放入的是继承自T的子类
public class Test{
public static void main(String [] args){
ArrayList<? extends Hero> adList = new ArrayList<ADHero>();
ArrayList<? extends Hero> apList = new ArrayList<APHero>();
ArrayList<? extends Hero> list = new ArrayList<Hero>();
list.add(new ADHero()); //无法放入子类,无法确定类型
}
}
- <? super T>
放入的是T的父类
public class Test{
public static void main(String [] args){
ArrayList<? super Hero> hList = new ArrayList<Hero>();
ArrayList<? super Hero> pList = new ArrayList<Person>();
plist.add(new Hero()); //子转父,可以放入
Hero h = plist.get(0); //无法拿出,不确定类型
}
}