泛型的使用
把类型明确的工作推迟到创建对象或调用方法的时候才去明确的特殊的类型
package generic;
import charactor.Hero;
import java.util.LinkedList;
//设计这个类的时候,在类的声明上,加上一个<T>,表示该类支持泛型。
public class MyStack<T> {
LinkedList<T> lls = new LinkedList<T>();
public void push(T t){
lls.addLast(t);
}
public T pull(){
return lls.removeLast();
}
public T peek(){
return lls.getLast();
}
public static void main(String[] args){
//声明类型
MyStack<Hero> heroStack = new MyStack<>();
heroStack.push(new Hero("Tim"));
}
}
通配符
package generic;
import charactor.ADHero;
import charactor.Hero;
import java.util.ArrayList;
public class TestGeneric {
public static void main(String[] args){
ArrayList<ADHero> adHeroes = new ArrayList<ADHero>();
adHeroes.add(new ADHero());
//此时不能往heroList中写入数据
ArrayList<? extends Hero> heroList = adHeroes;
//此时无法从heroList2中读取数据
ArrayList<? super ADHero> heroList2 = adHeroes;
//既不能写入,也无法取出
ArrayList<?> heroList3 = adHeroes;
}
}