读书人

Java基础 - 泛型之泛型参数

发布时间: 2013-02-24 17:58:56 作者: rapoo

Java基础 -- 泛型之泛型参数

泛型机制常用的参数有3个:

“?”代表任意类型。如果只指定了<?>,而没有extends,则默认是允许任意类。

extends关键字声明了类型的上界,表示参数化的类型可能是所指定的类型,或者是此类型的子类。

super关键字声明了类型的下界,表示参数化的类型可能是所指定的类型,或者是此类型的父类型,直至Object

前提

Fruit是Apple和Orange的超类。

本章通过java代码逐一分析泛型参数的意义和区别

extends参数

public void testWideCardType(){/** * ? 可以看做 ? extends Object 的简化版 */List<?> list = new ArrayList<Fruit>();List<?> list2 = new ArrayList<Apple>();List<?> list3 = new ArrayList<Object>();wideCardType(list,new Fruit());}

List<? super Object> 可以引用 List<任何类型>,而Object是所有的对象的祖先,此list只能添加Object类型对象。

extends和super意义记忆的技巧

? extends A: ?继承A,?是A的子类,或者?是A本身
? super B: ?是B的父类,或者?是B本身

参考文献:

http://baike.baidu.com/view/1436058.htm

http://fyting.iteye.com/blog/122732


读书人网 >编程

热点推荐