次のように、ジェネリック型をインスタンス化するためのスニペット コードがあります。
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")
この警告の理由と解決策は何ですか?