读书人

Java泛型总结(一)

发布时间: 2013-09-13 21:12:00 作者: rapoo

Java泛型小结(一)
在Java SE 1.5之前,没有泛型的情况的下,通过对类型Object的引用来实现参数的“任意化”,“任意化”带来的缺点是要做显式的强制类型转换,而这种转换是要求开发者对实际参数类型可以预知的情况下进行的。对于强制类型转换错误的情况,编译器可能不提示错误,在运行的时候才出现异常,这是一个安全隐患。   

泛型的好处是在编译的时候检查类型安全,消除源代码中的许多强制类型转换。这使得代码更加可读,并且减少了出错机会。

泛型小结将从如下几个方面入手: 通配符号的使用将放入下一篇博文中介绍。

泛型的修饰范围使用&实现多重限制类型擦除<? super T>, <? extends T>, <?>通配符的使用
泛型修饰的范围

java 泛型是java SE 1.5的新特性,泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。这种参数类型可以用在类、接口和方法的创建中,分别称为泛型类、泛型接口、泛型方法。


a) 泛型接口的例子




在编译后泛型类型是会被擦除的,在这个重载的例子中,因为参数List<Integer>和 List<String>编译之后都被擦除了,变成了一样的原生类型List<E>,擦除动作导致这两个方法的特征签名一样,这样两个相同的方法将不能满足重载,最后导致编译失败。


在编译后所有的泛型类型都会做相应的转化:

List<String>, List<Integer>, List<T>擦除后的类型为ListList<String>[] 擦除后的类型为List[]List<? extends E>, List<? super E> 擦除后的类型为List<E>List<T extends Serialiable & Clonable> 擦除后为List<Serialiable>

读书人网 >编程

热点推荐