Java的泛型
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java的泛型相关的知识,希望对你有一定的参考价值。
1,泛型技术
因为容器可以存储多种类型的对象,而在取出时,需要用到对象的特有内容时需要做向下转型,但是对象的类型不一致,会导致ClassCassException异常;为了运行时期不出现类型异常,可以在定义容器时,就明确容器中的元素类型,在向容器存储对象时就进行检查,一旦不一致编译就报错.是一项运行在编译时期的安全机制
注意结合多态且不能和多态弄混
2,泛型容器特点:
- 提高了程序的安全性
- 将运行期遇到的问题转移到了编译期
- 省去了类型强转的麻烦
- 泛型类的出现优化了程序设计例程
3,泛型的擦除:
编译器通过泛型对元素类型进行检查,检查通过,生产class文件,但在class文件中,就将泛型标识去掉了
4,泛型的表现:
泛型技术在集合框架中应用的范围很大,容器在不明确操作元素的类型情况下,对外提供的一个参数使用容器时,只要将具体的类型实参传递给该参数即可
5,泛型除了可以用于集合之外,也可以用户类,方法,接口
泛型类:比如操作某一类对象的Utils类时,由于并不清楚具体该Utils操作那一个类,所以在类定义时就明确参数,由使用该类的调用者来传递具体类型
Class Util<T>{}
泛型方法: 泛型方法,就代表着我们不知道具体的类型是什么,也不知道构造方法如何,因此没有办法去new一个对象,但可以利用变量c的newInstance方法去创建对象. 而调用泛型方法时,变量c的类型就是Class<User>,因此泛型方法中的泛型T就被指明为User,因此变量obj的类型为User.
为什么要使用泛型方法呢?因为泛型类要在实例化的时候就指明类型,如果想换一种类型,不得不重新new一次,可能不够灵活;而泛型方法可以在调用的时候指明类型,更加灵活。
泛型接口
6,通配符
在不明确具体类型的情况下,可以使用通配符?.用来操作所有类型
而操作一部分类型则可用<? extends Person>即可以用来操作Person类以及他的子类.称为泛型的限定,此例为上限.<? super Person>则可以用来操作Person类或者他的父类型,称为下限
以上是关于Java的泛型的主要内容,如果未能解决你的问题,请参考以下文章