广州双城热恋创意文化传播有限公司

现在的位置: 主页 > 联系方式 > 文章列表

文章正文

从头认识java-13.1 泛型与容器(容器的演变)

作者:广州双城热恋创意文化传播有限公司 来源:www.999loveyou.com 发布时间:2017-09-08 23:10:28
从头认识java-13.1 泛型与容器(容器的演变)

这一章节我们来讨论一下泛型与容器,准确来说是由于容器的需求而产生泛型的需求。

我们平常在编程的时候,大部分都是用了容器来装载对象,我们来看一下容器的演变。

1.普通容器

package com.ray.ch11; public class Test { public static void main(String[] args) { Holder holder = new Holder(new RealObject()); RealObject realObject = holder.getRealObject(); } } class RealObject { static { System.out.println(loading object); } } class Holder { private RealObject realObject; public Holder(RealObject realObject) { this.realObject = realObject; } public RealObject getRealObject() { return realObject; } }
上面的代码展示了能够装载RealObject这个类型对象的 容器,但是由于只是能够存储单一类型,因此实用性比较差。

2.万能容器

package com.ray.ch11; public class Test { public static void main(String[] args) { Holder holder = new Holder(new RealObject()); RealObject realObject = (RealObject) holder.getObject(); Holder holder2 = new Holder(new RealObject2()); RealObject2 realObject2 = (RealObject2) holder2.getObject(); } } class RealObject { static { System.out.println(loading object); } } class RealObject2 { static { System.out.println(loading object2); } } class Holder { private Object object; public Holder(Object object) { this.object = object; } public Object getObject() { return object; } }
我们修改一下上面的代码,把holder装载的类型改成Object,这个时候Holder可以装载任何的类型对象的容器。

虽然上面的容器是万能,但是一般编程的时候是不会用到各种类型的对象,大部分的时候是存储单一类型的对象,而且,在使用的过程中需要强制转换,这个是一个大问题,因为不一定知道需要转换对象的类型,因此,需要引入泛型。

3.泛型容器

package com.ray.ch11; public class Test { public static void main(String[] args) { Holder holder = new Holder(new RealObject()); RealObject realObject = (RealObject) holder.getObject(); Holder holder2 = new Holder(new RealObject2()); RealObject2 realObject2 = (RealObject2) holder2.getObject(); } } class RealObject { static { System.out.println(loading object); } } class RealObject2 { static { System.out.println(loading object2); } } class Holder { private T object; public Holder(T object) { this.object = object; } public Object getObject() { return object; } }
我们再次修改容器,引入泛型特性,这个时候容器基本满足需求,而且在编译的过程中也可以进行类型检查,保证类型的正确性。

4.泛型的核心概念

就是我告诉编译器我想使用什么类型的容器,然后编译器就会根据需要处理一些细节(例如:类型检测)

总结:这一章节主要讲述容器的演变,以及泛型与容器的关系。

企业建站2800元起,携手武汉肥猫科技,做一个有见地的颜值派!更多优惠请戳:武汉网站优化 https://www.feimao666.com

COPYRIGHT © 2015 广州双城热恋创意文化传播有限公司 ALL RIGHTS RESERVED. 网站地图 技术支持:肥猫科技
精彩专题:网站建设
购买本站友情链接、项目合作请联系客服QQ:2500-38-100