如果我指定一个返回泛型类的方法,我该怎么做才能动态指定泛型类的类型? 例如
try {
Class c =Class.forName(keytype);
Class d= Class.forName(valuetype);
KafkaConsumer<c,d> consumerconsumer = new KafkaConsumer<c,d>(PropertiesUtil.getPropsObj(configPath));
return consumer ;
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
但是上面的代码不行。我怎样才能做到这一点?
您可以让您的键和值类各自实现一个已知的接口。 然后您可以分配或投射它。
KafkaConsumer<IKeyType,IValueType> consumerconsumer = new KafkaConsumer<>(PropertiesUtil.getPropsObj(configPath));
或
KafkaConsumer<IKeyType,IValueType> consumerconsumer1 = (KafkaConsumer<IKeyType,IValueType>) new KafkaConsumer(PropertiesUtil.getPropsObj(configPath));
阅读此处有关对泛型进行限制的信息。 https://docs.oracle.com/javase/tutorial/java/generics/wildcards.html