Java泛型-类对象作为类型文字

时间:2020-01-09 10:35:59  来源:igfitidea点击:

在运行时,类对象也可以用作类型规范。例如,我们可以创建一个通用的方法,如下所示:

public static <T> T getInstance(Class<T> theClass)
    throws IllegalAccessException, InstantiationException {

    return theClass.newInstance();
}

以下是一些调用getInstance()方法的示例:

String string   = getInstance(String.class);

MyClass myClass = getInstance(MyClass.class);

如我们所见,返回类型的变化取决于我们将什么类对象作为参数传递给方法。这在数据库API(例如Butterfly Persistence)中非常方便,我们可以从数据库中读取对象。这是一个示例方法定义:

public static <T> T read(Class<T> theClass, String sql)
    throws IllegalAccessException, InstantiationException {

    //execute SQL.

    T o = theClass.newInstance();
    //set properties via reflection.

    return o;
}

这是我们调用read()方法的方式:

Driver employee   = read(Driver.class, "select * from drivers where id=1");

Vehicle vehicle   = read(Vehicle.class, "select * from vehicles where id=1");