欢迎来到天天文库
浏览记录
ID:37733065
大小:36.00 KB
页数:4页
时间:2019-05-29
《一点Java泛型集合的理解》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、什么是泛型?泛型(Generictype或者generics)是对Java语言的类型系统的一种扩展,以支持创建可以按类型进行参数化的类。可以把类型参数看作是使用参数化类型时指定的类型的一个占位符,就像方法的形式参数是运行时传递的值的占位符一样。Map类允许您向一个Map添加任意类的对象,即使最常见的情况是在给定映射(map)中保存某个特定类型(比如String)的对象。因为Map.get()被定义为返回Object,所以一般必须将Map.get()的结果强制类型转换为期望的类型,如下面的代码所示:1.Mapm=newHashMap();2.m.put("key","value");3.Str
2、ingresult=(String)m.get("key");想让程序编译通过,必须将m.get(“key”)强制转换为String类型,因为这里放入了String类型的值,取得的结果也一定是String类型的。如果你往map里放入了不是String类型的值,那么将会报ClassCastException错误。理想情况下,您可能会得出这样一个观点,即m是一个Map,它将String键映射到String值。这可以让您消除代码中的强制类型转换,同时获得一个附加的类型检查层,该检查层可以防止有人将错误类型的键或值保存在集合中。这就是泛型所做的工作。泛型带来的好处类型安全限制了变量定义的类型。消除强
3、制类型转换还是拿刚才的例子说1.Mapm=newHashMap();2.m.put("key","value");3.Stringresult=m.get("key");上面的代码是不是少了强制转换而且代码看着也简洁多了,这就是泛型的好处之一。平时大家写的时候,编辑器会有个黄色的感叹号来提醒你需要使用泛型。泛型的通配符?通配符使用?通配符可以引用其他各种参数化的类型,?通配符定义的变量主要用作引用,可以调用与参数化无关的方法,不能调用与参数化有关的方法。下面看个例子:1.publicclassPeople{2.3. private
4、Stringname;4. privateStringjob;5.6. publicPeople(){7. }8.9. publicPeople(String_name,String_job,int_sex){10. this.name=_name;11. this.job=_job;12. this.sex=_sex;13. }14.15. publicvoidSayHello(){16. System.out.println("我是一位"+job+";我的名字叫"+name);17. }18.19. publicStringgetN
5、ame(){20. returnname;21. }22.23. publicvoidsetName(Stringname){24. this.name=name;25. }26.1. publicStringgetJob(){2. returnjob;3. }4.5. publicvoidsetJob(Stringjob){6. this.job=job;7. }8.9. publicintgetSex(){10. returnsex;11. }12.13. publicvoidsetSex(intsex){14.
6、 this.sex=sex;15. }16.17. privateintsex;18.19.}1.publicclassSoftwareEngineerextendsPeople{2.3. publicvoidcoding(){4. System.out.println("coding……");5. }6.}1.publicclassCookextendsPeople{1.2. publicvoidcook(){3. System.out.println("cooking……");4. }5.}主方法:1.Listflist=n
7、ewArrayList();2. flist.add(newPeople());3. SoftwareEngineersoft=(SoftwareEngineer)flist.get(0);4. soft.coding();输出结果:coding……注意这里是super,那么flist.add()里面添加newPeople(),也可以添加newSoftwareEn
此文档下载收益归作者所有