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

页面导航:首页 > 软件编程 > Java编程 > 从头认识java-13.1 泛型与容器(容器的演变)

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

来源: 作者: 时间:2016-01-18 15:52 【

这一章节我们来讨论一下泛型与容器,准确来说是由于容器的需求而产生泛型的需求。我们平常在编程的时候,大部分都是用了容器来装载对象,我们来看一下容器的演变。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.泛型的核心概念

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

 

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

 

 

 

Tags:

文章评论

最 近 更 新
热 点 排 行
Js与CSS工具
代码转换工具

<