如何在实例化之前参数化泛型类?

时间:2017-05-18 15:25:23

标签: java generics

我正在根据命令行参数加载db-driver,如下所示:

Class driverClass = null;
try {
    driverClass = Class.forName(dbDriver);
catch(ClassNotFoundException e) {
    // Print error message here
}

稍后我致电driverClass.newInstance()

如何避免消息

  

Class是原始类型。对泛型类型Class<T>的引用应该参数化

如果我尝试Class<Driver>,Class.forName部分会抱怨类型不匹配:

  

类型不匹配:无法从Class<capture#1-of ?>转换为   Class<Driver>

这很奇怪,如何正确地在第一行中对Class进行参数化?

1 个答案:

答案 0 :(得分:3)

如果您现在知道确切的类名,则可以将?指定为类型,这意味着任何扩展Object的类:

Class<?> driverClass = Class.forName(dbDriver);