【发布时间】:2015-11-02 15:43:01
【问题描述】:
以下代码使用反射 API 检索字段的值。 正如您在提供的图片中看到的,这会生成 unchecked cast 警告。 可以使用 @SuppressWarnings("unchecked") 抑制警告。我想知道是否有替代方法?
更新:KeyType 是通用的。所以 KeyType.class.cast(object); 由于类型擦除而无法工作。
private K getId(Field idField, V o) {
K id = null;
try {
idField.setAccessible(true);
id = (K) idField.get(o);
} catch (IllegalAccessException ignored) {
/* This never occurs since we have set the field accessible */
}
return id;
}
解决方案: 似乎 SuppressWarnings 注释是去这里的方式。谢谢你们的时间。
【问题讨论】:
-
将得到的值包装成 KeyType.class.cast(Object obj)
-
KeyType 是通用的。由于类型擦除,这将不起作用。还有其他想法吗?
-
我不认为它是通用的。
-
这是一种重要信息,应该有问题...请编辑您的帖子并在此处包含此信息。
-
为了避免以后阅读代码时出现这种混淆,我们一般使用一个字母的泛型名称,例如
K用于键类型,V用于值类型等等。
标签: java reflection unchecked-cast