集合框架之泛型详解.docx

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
集合框架之泛型详解泛型(Generics)什么是泛型?泛型是在jdk1.5以后出现的新特性,用于解决安全问题,是一个类型安全机制。泛型格式:通过来定义要操作的引用数据类型。例如以下的例子:import java.util.*;class GenericsDemo{ public static void main(String[] args) { ArrayListString list=new ArrayListString(); list.add(zhangsan); list.add(lisi); list.add(huangsan); //list.add(new Integer(3));//会出编译时错误 for(IteratorString it=list.iterator();it.hasNext();){ String s=it.next(); System.out.println(s); } }}我们可以看到使用泛型有很多好处。将运行时期出现问题ClassCastException,转移到了编译时期。方便程序员解决问题。让运行时期问题减少,安全。避免了强制转换的麻烦。什么时候使用泛型呢?是在使用java提供的API的一些对象时,只要见到就要定义泛型,通常在集合框架中很常见。就是用来接受类型的,当使用集合时,将集合中要存储的数据类型作为参数传递到中即可。自定义泛型自定义泛型类自定义泛型有什么好处呢?自定义泛型最大的好处就是扩展性好。我们看看如下的例子:class GenericsToolT{ private T t; public T getObject(){ return t; } public void setObject(T t){ this.t=t; }}class CustomGenericsDemo { public static void main(String[] args) { /* Objcet */ ObjectTool ot=new ObjectTool(); ot.setObject(new Student()); Student stu=(Student)ot.getObject(); /* Generics,T也可以是Student */ GenericsToolPerson gt=new GenericsToolPerson(); gt.setObject(new Person()); Person p=gt.getObject();//不需要强制转换 }}我们可以看出自定义泛型的可扩展性高。我们什么时候自定义泛型类呢?当类中要操作的引用数据类型不确定时候,我们在jdk1.5前是个使用Object来完成扩展,现在呢我们使用泛型来完成扩展。自定义泛型方法我们要注意,泛型类定义的泛型,在整个类中有效,如果被方法使用,那么泛型类的对象明确要操作的具体类型后,所要操作的类型就固定的了。就是说我们在泛型类里传入的类型是什么类型,它的泛型方法就是什么类型。这也是泛型类的一个局限性。那么为了让不同方法可以操作不同类型,而且类型还不确定,那么可以将泛型定义在方法上。就是说泛型就只能在方法里有效,在调用方法时,可以任意传入不同类型对象。例如:class MethodGenericsDemo{ public static void main(String[] args) { MethodGenericsDemo md=new MethodGenericsDemo(); /* 可以传入任何类型 */ md.show(haha); md.show(3); md.show(true); } public T void show(T t){ //泛型方法 System.out.println(t); }}静态方法泛型:我们注意静态方法不可以访问类上定义的泛型。如果静态方法操作的应用数据类型不确定,可以将泛型定义在方法上。静态方法格式:public static T void method(){};自定义泛型接口泛型自定义在接口是怎样的呢?interface GenericsT{ public void show(T t);}/*第一种实现泛型接口类*/class InGenerics_1 implements GenericsString{ public void show(String s){ System.out.println(s); }}/*第二种实现泛型接口类*/class InGenerics_2T implements GenericsT{ public void show(T t){ System.out.

文档评论(0)

js1180 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档