在上一讲深入理解ArrayList(一)根据需求写了一个非常简单的MyList,那么这个MyList到底有哪些问题呢?

问题描述

要知道用户的需求是随时发生变化的,但需求变化时,你写得代码是否能够适应这种变化,这体现出了一名开发者非常重要的能力。

假如用户现在的需求发生了变化,要你写一个能够添加整型数据的List,而不再是字符串类型的,此时你该怎么办呢?

可能有同学说这个很简单啊,我把String替换成Integer就可以了,如下:

深入理解ArrayList(二)_编程

这种做法确实能够满足用户新的需求,但是需要重新修改代码,重新编译,而且假如用户的需求再次发生变化,要你添加一个Double类型的数据呢?难道你又要重新修改一次代码吗?

显然这种方式是不可靠的,那么对于这种情况有没有解决方案呢?

解决方案

这里面就要给大家介绍一种新的技术来实现上述类型的不断变化需求,这种技术就是Java的泛型。

我们可以将用户要添加的元素类型做成一个参数,用户需要添加什么类型的元素,这种类型可以由用户自己指定,这种技术称之为泛型。深入理解ArrayList(二)_编程_02

 

使用泛型了之后,由于我们不知道用户添加的元素到底是什么类型,因此底层的数组,我们不能再使用String[]这种类型,不能指定具体的数组类型,而应该使用一种能够保存任何类型数据的数组,什么数组能够保存任意类型的数据呢?

这个问题的答案就是Object[],因为Obejct是所有类的父类。深入理解ArrayList(二)_编程_03

 

这就是最终我们修改的代码,下面我们将编写测试代码对其进行测试。

 

通过泛型机制我们就可以很好的实现不同元素类型的切换,无论用户要添加什么类型的元素,都不用修改代码,很好的适应用户的需求。

总结

本文针对上一讲设计的MyList存在的不能较好适应元素类型变化的问题,提出了使用泛型机制解决,进一步完善了代码,达到适应添加任何元素类型的需求。

请大家继续思考,改进后的代码又存在什么问题呢?欢迎下方留言。

深入理解ArrayList(二)_编程_04