介于我在写业务代码的时候时,想用泛型来实现代码复用,但是由于接口较多,抽象程度较复杂,导致没有理清楚泛型的关系,因此重新学习理解Java泛型。
当泛型作用在类上,即一个类是一个泛型类的时候。泛型是类的参数。
例如:
我们创建一个有Id标志的数据类。无论类中的泛型参数T是什么类型的,这个类都有一个id。
public class IdData<T> {
String id;
T data;
}
当我们作为这个泛型类的客户时,我们要用泛型类。使用泛型类的时候,我们需要指定类的泛型参数,从而让这个泛型类因为泛型参数的不同而变成不同的类(虽然在运行时泛型参数被擦除了)。即一个泛型类,在被使用的时候,可以因为泛型参数的不同,而变的不同,如:
IdData<String> stringIdData = new IdData<>();
IdData<Integer> integerIdData = new IdData<>();
IdData<Thread> threadIdData = new IdData<>();
设计泛型类的目的一般是:
在泛型方法中,泛型通常作用于方法的:
普通类是对一组对象的抽象。
泛型类是对一组具有共性(例如两个类除了一两个属性不同外,其余代码都相同,那么这一两个属性应做成泛型)的普通类的抽象。
泛型通配符类是对泛型类的抽象。