欢迎来到天天文库
浏览记录
ID:35315451
大小:61.16 KB
页数:8页
时间:2019-03-23
《黑马程序员java培训就业班笔记day18(泛型、map集合)总结》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、Day18总结1、泛型类:在写容器之前想要容器中要存什么?所以要先写好泛型Eg:TreeSetts=newTreeSet();有了泛型后强制转换就没有用Eg:publicclassPersonimplementsComparator{}对于下面覆盖的它的compare方法就不用强制转换了。Publicintcompare(Personp){}这里就不用在做强制转换了。实现代码:Publicstaticvoidmain(String[]args){Toolt=newTool();t.setObject(newCat());t
2、.setObject(newDog());这时编译会出现没问题,但是运行时会出现错误,因为发生了类型转换异常,dog不能转换成Cat。Catc=(Cat)t.getObject();Toolt=newTool();t.setObject(new Cat());此时就不用强转了t.setObject(newDog()):此时编译就失败,把运行时的异常转到编译时候。}ClassCat{}ClassDog{}/*ClassTool{PrivateObjectobj;PublicvoidsetObject(Objectobj){This.obj=obj;}P
3、ublicObjectgetObject(){Returnobj;}}*/改进后Class Tool{PrivateTt;PublicvoidsetObject(Tt){This.t=t;}PublicTgetObject(){Returnt;}}总结:这就是将泛型定义在类上,这个类称为泛型类,是一种替代Object类的一种技术,因为Object类有自动类型提升和转换,泛型已经替代它做了,编译时期更安全,省去了强转的麻烦。什么时候使用泛型类?当类中要操作的引用数据类型不确定的时候,以前使用的是共性类型Object现在可以使用泛型来解决,比Object更为安全。1、
4、泛型方法:既然类中的方法操作类型不确定,其实可以将泛型定义在方法上。实现代码:Toolt=newTool2>();T.show(newInteger(5));编译失败,因为类型不一致。Tool2t1=newTool2();这样便可以操作Integer类型的对象了。T.show();ClassTool2{显示对象的打印结构,可是对象不确定,所以使用Object,而现在可以使用泛型解决。voidshow(Wobj){Sop(obj);}当静态方法的时候,如果方法是静态的是无法访问类上定义的泛型的
5、,如果该方法还需要泛型,必须将泛型定义在方法上,StaticvoidstaticMethod(Yt){}泛型定义在方法上时只能放在返回值的前面和修饰符的后面}什么时候使用泛型方法?当方法操作的引用数据类型不确定的时候就使用方法。2、泛型接口:实现代码:InterfaceInter{voidshow(Tt);}ClassInterImplimplementsInter{Publicvoidshow(Stringstr){Sop(str);}}不明确的时候用上面这种,但是当我们明确了类型时候使用下面的这种情况ClassInterImplim
6、plementsInter{Publicvoidshow(Ww){}}Publicstaticvoidmain(String[]args){NewInterImpl().show("hehe");}3、泛型通配符:不带泛型也是可以的,因为新的可以兼容前面的,因为泛型擦除之后它还是Object注意区分Tt代表某一种实现代码:Publicstaticvoidmain(String[]args){ArrayListal=newArrayList();Al.add(newStudent("lisi",21));Al.add(newStu
7、dent("lisi2",22));Al.add(newStudent("lisi3",23));ArrayListal2=newArrayList();Al.add(newStudent("lisiso",23));Al.add(newStudent("lisiss",23));Al.add(newStudent("lisisdsdf",23));ArrayListal3=newArrayList();printCollection(a1);printCollection(
此文档下载收益归作者所有