Java 泛型类

更新于 2025-12-28

Jakob Jenkov 2015-07-03

你可以为自己的 Java 类添加泛型支持。泛型并不仅限于 Java API 中预定义的类。下面是一个简单的示例:

public class GenericFactory<T> {
    Class theClass = null;

    public GenericFactory(Class theClass) {
        this.theClass = theClass;
    }

    public T createInstance() throws IllegalAccessException, InstantiationException {
        return (T) this.theClass.newInstance();
    }
}

其中 <T> 是一个类型参数(type token),表示该类在实例化时可以指定一个具体类型。

下面是使用方式的一个例子:

GenericFactory<MyClass> factory = new GenericFactory<MyClass>(MyClass.class);
MyClass myClassInstance = factory.createInstance();

注意,从 factory.createInstance() 方法返回的对象不需要进行强制类型转换。编译器可以根据创建 GenericFactory 实例时在尖括号 <> 中指定的泛型类型推断出返回对象的类型。

每个 GenericFactory 的实例都可以被指定为不同的泛型类型。以下是两个例子:

GenericFactory<MyClass> factory = new GenericFactory<MyClass>(MyClass.class);
MyClass myClassInstance = factory.createInstance();

GenericFactory<SomeObject> factory = new GenericFactory<SomeObject>(SomeObject.class);
SomeObject someObjectInstance = factory.createInstance();