记录:
查询与理解.
java中泛型匹配:
<? extends T> 表示类型的上界,表示参数化类型的可能是T或是T的子类.
<? super T> 表示类型下界(Java Core中叫超类型限定),表示参数化类型是此类型的超类型(父类型)直至Object;
PECS原则:PECS(Producer Extends Consumer Super)原则
1.频繁往外读取内容的,适合用上界Extends.
2.频繁往里插入的,适合用下界Super.
1. Basket<T>
public class Basket<T> {
private T item;
public Basket(T t) {
item = t;
}
public void set(T t) {
item = t;
}
public T get() {
return item;
}
}
2. Vegetables
public class Vegetables {
public void getInfo() {
System.out.println("Vegetables输出.");
}
}
3. Carrot
public class Carrot extends Vegetables{
public void getInfo() {
System.out.println("Carrot输出.");
}
}
4. Eggplant
public class Eggplant extends Vegetables {
public void getInfo() {
System.out.println("Eggplant输出.");
}
}
5. 测试
public class TestGenericMain {
public static void main(String []args){
System.out.println("测试开始......");
/**1. <? extends T> Vegetables本身或者子类*/
Basket<? extends Vegetables> basket1 = new Basket<Carrot>(new Carrot());
Vegetables vegetables1 = basket1.get();
Carrot carrot1 = (Carrot) basket1.get();
/**2. <? super T> Vegetables本身或者超类*/
Basket<? super Vegetables> basket2 = new Basket<Vegetables>(new Vegetables());
Eggplant eggplant1 = new Eggplant();
basket2.set(eggplant1);
Basket<? super Vegetables> basket3 = new Basket<Object>(new Object());
Eggplant eggplant2 = new Eggplant();
basket3.set(eggplant2);
System.out.println("测试结束......");
}
}
以上,感谢.