泛型(generics)和集合、反射机制联系的很紧密。我们首先了解一下泛型。
李老师书籍里面的定义:泛型就是指在对象建立时不指定类中属性的具体类型,而由外部在声明及实例化对象时指定类型。好抽象。。继续!
看下面一段代码:定义一个坐标类,坐标的表示可以是整数、小数和字符串,这时我们可以利用自动上转型的思想,定义Object类便可以接收到任意类型表示的坐标
执行结果:
那么,问题来了,我们的Object类可以接收任意类型的坐标表示,那么我们一个接收int,一个接收String试一下
我们在取出数据的时候还是必须要知道我们设置的数据是整型的还是字符串类型的,然后进行相应的转换,否则会产生数据类型转换异常,造成类型安全,解决该问题就应该使用泛型技术。
我们先来看一下泛型长什么样子吧,一个简单的实例:
分析:我们将test指定为Integer类型,这样getTest()的返回值类型和setTest()的参数列表中的形式参数类型就变为了Integer类型。泛型实例化对象的方式要牢记。
我们在上例中输出的时候还是使用了自动拆箱:Integer--->int。那么为什么我们不直接将test指定为int类型呢?
这是因为在泛型的指定中是无法指定基本数据类型的,必须设置一个类,这样在设置一个数字时就必须使用包装类。