我有一个片段代码,用于实例化泛型类型,如下所示:
public class GenericMessageMapper<I ,X>
{
public X xFromI(I imf)
{
// do thing by imf argument
Class<X> clazz = (Class<X>)((ParameterizedType)
this.getClass()
.getGenericSuperclass())
.getActualTypeArguments()[1];
X x = clazz.newInstance();
}
}
上面的代码运行正常但MyEclipse
通过以下消息在代码上显示警告(准备clazz
变量行时出现黄线):Type safety: Unchecked cast from Type to Class<X>
我在xFromI
方法的上方临时添加了以下注释:
@SuppressWarnings("unchecked")
这个警告的原因是什么,解决方案是什么?
答案 0 :(得分:2)
警告就是这样。一个警告。有时警告是无关紧要的,有时它们不是。它们习惯于引起你注意编译器认为可能存在问题的东西,但可能不是。
在演员阵容的情况下,在这种情况下总是会发出警告。如果您完全确定某个特定的演员阵容是安全的,那么您应该考虑在该行之前添加这样的注释:
@SuppressWarnings (value="unchecked")
答案 1 :(得分:1)
它只表示类的类型只在运行时才知道,因此可能会出现这样的情况:您认为应该获得类型为X的类,但实际上它是其他类型的类(它不知道它在编译时,因为X可以是任何类型)。
基本上你可以忽略这个警告。
答案 2 :(得分:1)