网站大量收购独家精品文档,联系QQ:2885784924

黑马程序员java培训就业班笔记day18泛型Map集合总结.doc

黑马程序员java培训就业班笔记day18泛型Map集合总结.doc

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Day18总结 泛型类: 在写容器之前想要容器中要存什么?所以要先写好泛型 Eg:TreeSetPerson ts=new TreeSetPerson(); 有了泛型后强制转换就没有用 Eg:public class Person implements ComparatorPerson{} 对于下面覆盖的它的compare方法就不用强制转换了。 Public int compare(Person p){}这里就不用在做强制转换了。 实现代码: Public static void main(String[] args){ Tool t=new Tool(); t.setObject(new Cat()); t.setObject(new Dog());这时编译会出现没问题,但是运行时会出现错误,因为发生了类型转换异常,dog不能转换成Cat。 Cat c=(Cat)t.getObject(); ToolCat t=new ToolCat(); t.setObject(new Cat());此时就不用强转了 t.setObject(new Dog()):此时编译就失败,把运行时的异常转到编译时候。 } Class Cat{} Class Dog{} /* Class Tool{ Private Object obj; Public void setObject(Object obj){ This.obj=obj; } Public Object getObject(){ Return obj; } } */ 改进后 Class ToolT{ Private T t; Public void setObject(T t){ This.t=t; } Public T getObject(){ Return t; } } 总结:这就是将泛型定义在类上,这个类称为泛型类,是一种替代Object类的一种技术,因为Object类有自动类型提升和转换,泛型已经替代它做了,编译时期更安全,省去了强转的麻烦。 什么时候使用泛型类?当类中要操作的引用数据类型不确定的时候,以前使用的是共性类型Object现在可以使用泛型来解决,比Object更为安全。 泛型方法:既然类中的方法操作类型不确定,其实可以将泛型定义在方法上。 实现代码: ToolString t=new Tool2String(); T.show(new Integer(5));编译失败,因为类型不一致。 Tool2Integer t1=new Tool2Integer();这样便可以操作Integer类型的对象了。 T.show(); Class Tool2T{ 显示对象的打印结构,可是对象不确定,所以使用Object,而现在可以使用泛型解决。 Wvoid show(W obj){ Sop(obj); } 当静态方法的时候,如果方法是静态的是无法访问类上定义的泛型的,如果该方法还需要泛型,必须将泛型定义在方法上, Static Y void staticMethod(Y t){} 泛型定义在方法上时只能放在返回值的前面和修饰符的后面 } 什么时候使用泛型方法?当方法操作的引用数据类型不确定的时候就使用方法。 泛型接口: 实现代码: Interface InterT{ void show(T t); } Class InterImpl implements InterString{ Public void show(String str){ Sop(str); } } 不明确的时候用上面这种,但是当我们明确了类型时候使用下面的这种情况 Class InterImplW implements Interw{ Public void show(W w){} } Public static void main(String[] args){ New InterImpl().show(hehe); } 泛型通配符:不带泛型也是可以的,因为新的可以兼容前面的,因为泛型擦除之后它还是Object注意区分T t代表某一种 实现代码: Public static void main(String[] args){ ArrayListStudent al=new ArrayListStudent(); Al.add(new Student(lisi,21)); Al.add(new Student(lisi2,22)); Al.add(new Student(lisi3,23)); ArrayListWorker al2=new ArrayListWorker(); Al.add(new Student(lisiso,23)); Al.add(new Student(lisiss,23)); Al.

文档评论(0)

189****6140 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档