Java泛型中extends和super

记录:
        查询与理解.
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("测试结束......");
  }
}

以上,感谢.

发布了183 篇原创文章 · 获赞 40 · 访问量 15万+

猜你喜欢

转载自blog.csdn.net/zhangbeizhen18/article/details/103737529