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();