泛型是程序设计语言的一种特性。它允许程序员在使用强类型程序设计语言编写代码时定义一些可变部分这些可变部分在运行前必须做出指明。在编程中用泛型来代替某个实际的类型,而后通过实际调用时传人或推导的类型来对泛型进行替换,以达到代码复用的目的。在使用泛型的过程中,操作数据类型被指定为一个参数,这种参数类型在类、接口和方法中,分别称为泛型类、泛型接口、泛型方法。相对于传统上的形参,泛型可以使参数具有更多类型上的变化,使代码能更好地复用。例如下面这段代码:
public class Box private String value; public void set (String value) { this.value=value; }public String get () { return value; }}
上述代码中,定义了一个Box类,Box类中设置了一个Sring类型的数据。这时程序运行起来是没有问题的。但是,如果需要一个能设置Integer类型数据的类,这个时候只能重新创建一个类,把value改为Integer类型的。可是,随着业务不断增加,需要设置越来越多数据类型的类,这样会使工程变得越来越“笨重”,并且安全性和重用性都非常低。
泛型就能够很好地解决上述问题。下面使用泛型改造Box类,具体代码如下:
public class Box<T> {private T t;public void set (T t) {this.t=t;public T get () {return t;}}
上述代码中,Box类在定义时使用了“<I>”的形式,T表示此类型是由外部调用本类时指定的。这样,在实例化类对象时可以传入除基础数据类型以外的任意类型数据,使类具有良好的通用性。 在泛型中,T可以使用任意的字母代替,如“<A>”“<B>”。之所以使用“<T>”是因为T是type的缩写,表示类型。