【发布时间】:2018-04-05 19:29:36
【问题描述】:
我有以下课程:
class Processor<T> {
void process( T request ) {...}
}
然后我调用以下代码:
Processor<String> p = Processor.class.newInstance();
Eclipse 抱怨,作为对 Processor.class.newInstance() 的警告:
"类型安全:处理器类型的表达式需要不检查 转换为符合处理器
"
如何为这个表达式指定模板参数?比如:
Processor<String> p = Processor.class.newInstance<String>();
【问题讨论】:
-
暂时忘记泛型 - 在 Class 对象上调用 newInstance 代表应该给你的接口是什么?
-
Processor.class.newInstance()返回一个Processor(原始类型),您尝试将其分配给参数化类型。在这种情况下,您可以安全地抑制警告,但除非您了解使用泛型做什么,否则不要养成这种习惯。 :) (而且,上面的问题很重要。) -
@cppbeginner 抱歉,我是想让它成为一个类,而不是一个接口。我更新了问题。
-
你为什么要反思?打电话给演员。
-
为什么不直接打电话给
new Processor<>();?我想这是一个人为的例子,如果你只需要实例化它,我建议使用Supplier<? extends Processor<String>>。
标签: java generics reflection interface