A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 黑马任雪刚 中级黑马   /  2012-5-4 16:16  /  2237 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

在java中泛型怎样使用呀?

4 个回复

倒序浏览
一个泛型类型通过使用一个或多个类型变量来定义,并拥有一个或多个使用一个类型变量作为一个参数或者返回值的占位符。例如,类型java.util.List<E>是一个泛型类型:一个list,其元素的类型被占位符E描述。这个类型有一个名为add()的方法,被声明为有一个类型为E的参数,同时,有一个get()方法,返回值被声明为E类型。

举个例子来说,您有一个只能保持String对象的List,那么这种类型检查就能够阻止您往里面加入String[]对象。同样的,增加的类型信息使编译器能够为您做一些类型转换的事情。比如,编译器知道了一个List<String>有个get()方法,其返回值是一个String对象,因此您不再需要去将返回值由一个Object强制转换为String。

回复 使用道具 举报
使用泛型是为了编译时出现错误了能及时提醒。另外,也是限定要操作的对象类型。
如:List<String> list=new ArrayList<String>();它的操作对象就只能是String类型。
class  Dog<T>{}
回复 使用道具 举报
在jdk1.4版本之前,定义容器可以存储任意类型的对象,但是取出时,如果使用了具体元素的方法,需要向下转型的动作。因为元素类型的不一致,会导致运行时, ClassCastException 类型转换异常。问题原因是,在定义集合时,并没有明确集合中的元素的具体类型。借鉴数组的定义方式就可以避免这个问题。所以jdk1.5版本以后,出现了一个解决机制,就在定义容器时,直接明确容器的元素类型。ArrayList<String> a = new ArrayList<String>();
这是就是泛型的表现,通过<>格式来使用,其实泛型就是使用到了带有<>的类和接口时,传递需要操作的对象的类型即可,其实就传递类型参数。
什么时候写泛型
最简单一种体现,只要使用了带有<>的类的接口,就是指定具体对象类型。
泛型的好处:
1、将运行时出现的 ClassCastException 问题,在编译时期给解决了,运行就安全了
2、避免了强制转换的麻烦了。
所以泛型就是jdk1.5后出现了一个安全机制。
泛型是编译时期的安全机制
泛型的擦除:
        编译时,通过泛型机制,编译器多了对元素类型进行检查的步骤。如果检查通过,产生的class文件是不带有的泛型的:泛型的擦除。
泛型的补偿:
        在对元素存储的时候,可以完成类型的判断。可是在对元素取出的时候,怎么用指定的类型来接收呢?jvm在运行时,会获取元素的类型,并用该类型对元素进行转换即可。
        泛型在表现上的特点:

泛型类:
将泛型定义在自定义类上,这个类称为泛型类。
所以泛型替代了Object的同时在编译时期更安全,省去了强转的麻烦。

什么时候使用泛型类呢?
当类中的要操作的引用数据类型不确定的时候,以前使用的共性类型Object,现在可以使用泛型来解决。

泛型方法:
类中的方法操作的类型不确定时,可以将泛型定义在方法上。

什么时候使用泛型方法?
当方法操作的引用数据类型不确定的时候,就使用泛型方法。

*.如果方法是静态的,是无法访问类上定义的泛型的,如果该方法还需要泛型,必须将泛型定义在方法上。
回复 使用道具 举报
额,你的问题好广啊,难道我要把我的笔记都贴上来么- -
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马