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("测试结束......");
  }
}

以上,感谢.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值