Java通用类

时间:2020-01-09 14:19:58  来源:igfitidea点击:

可以泛化自己的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>"是一个类型标记,表示在实例化此类时可以设置类型。下面是一个示例:

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