Java 泛型中的<? super T>和<? extends T>
2015-03-22 16:30
706 查看
super 要求 ? 必须是 T 的超类或者自身
extends 要求 ? 必须是T的子类或者自身
/** * <? super T> * super 要求 ? 必须是 T 的超类或者自身 * Super */ @Test public void testSuper() { //ArrayList泛型为String,符合<? super String>的要求,String和String本身是相同的类型 List<? super String> ts = new ArrayList<String>();//正确 //ArrayList的泛型是Object,Object是所有类的父类,符合<? super T>的要求 List<? super String> objects = new ArrayList<Object>();//正确 //ArrayList的泛型是String,String和Integer没啥关系,不符合要求 //List<? super Integer> strings = new ArrayList<String>();//错误 //ArrayList的泛型是String,String是Object的子类,不符合要求 //List<? super Object> strings = new ArrayList<String>();//错误 }
/** * <? extends T> * extends 要求 ? 必须是T的子类或者自身 */ public void testExtends(){ //ArrayList的泛型是String,String是Object的子类,符合<? extends T>的要求 List<? extends Object> strings = new ArrayList<String>(); //ArrayList的泛型是Object,Object是String的父类,不符合<? extends T>的要求 //List<? extends String> objects = new ArrayList<Object>(); //错误 }
相关文章推荐
- 理解Java 泛型 :<? super T> 和<? extends T>
- Java学习之道:简述泛型通配符<? extends T>和<? super T>
- Java 泛型 <? super T> 中 super 怎么 理解?与 extends 有何不同?
- Java泛型之<? extends T>和<? super T>
- java <? super Fruit>与<? extends Fruit>
- 泛型中<? super T> 和<?extends T>的区别
- Java学习之道:简述泛型通配符<? extends T>和<? super T>
- Java中 <? super T>,<? extends T>,和<T>的区别
- 黑马程序员_java对泛型的限定: <? extends E > , < ? super E > 的理解和体会。
- Java 泛型 <? super T> 中 super 怎么 理解?与 < ? extends T>有何不同?
- Java 泛型 <? super T> 中 super 怎么 理解<?与 extends> 有何不同?
- Java中 <? super T>,<? extends T>,和<T>的区别
- 【java】泛型中<? extends E>和<? super E>的区别
- Java 泛型 <? super T> 中 super 怎么 理解?与 extends 有何不同?
- Java 泛型 <? super T> 中 super 怎么 理解?与 extends 有何不同?
- 浅谈Java泛型之<? extends T>和<? super T>的区别
- Java中<? extends T>和<? super T>的理解,泛型的使用规则
- Java 泛型 <? super T> 中 super 怎么 理解?与 extends 有何不同?
- Java 泛型 <? super T> 中 super 怎么 理解?与 extends 有何不同?
- 泛型 <? extends Object> <? super Object>