泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。这种参数类型可以用在类、接口和方法的创建中,分别称为泛型类、泛型接口、泛型方法。
泛型类:
声明泛型类时,需要在类名后面跟上一个类型参数(也叫“类型变量”)即可,其语法格式为:
[修饰符] class 类名<类型参数列表> [extends 父类名] [implements 接口 1名,接口 2名, 。。。]{
类体
}
// Box类的泛型版本.
public class Box<T> {
private T t;
public void set(T t) {
this.t = t;
}
public T get() {
return t;
}
}
泛型方法:
“泛型方法”指的是引入它们自己的类型参数的方法。这与声明一个泛型类型相似,但是类型参数
的作用域被限制在它被声明的方法中。也允许声明静态和非静态的泛型方法,以及泛型类构造器。
泛型方法的语法如下所示:
public <U> void inspect(U u){/*……*/}
在“继承”中,可以将一个类型的对象赋给另外一个类型的对象,只要两个类型是兼容的。对于泛型,也可以这样使用。可以执行一个泛型调用,传 递 Number 作为它的类型实参,而任何后来对于 add()方法的调用,如果参数与 Number相兼容(是Number类型或其子类),都是可以的。