Java: 未经检查的转换类型安全警告
Java: Type Safety warning with unchecked conversion
我在我的项目中使用 java。当我尝试从 json 对象获取密钥时,我收到此警告: Type safety: The expression of type Iterator needs unchecked conversion to conform to Iterator
我尝试通过 @SupressWarning('unchecked')
修复,但 Eclipse 仍然在文件中显示警告。我不知道出了什么问题。
public static HashMap<String, String> jsonToMap(final JSONObject jsonMap)
throws JSONException {
HashMap<String, String> map = new HashMap<String, String>();
Iterator<Object> keys = jsonMap.keys();
while (keys.hasNext()) {
String key = (String) keys.next();
String value = jsonMap.getString(key);
map.put(key, value);
}
return map;
}
JSONObject#Keys()
方法 returns Iterator
的原始类型,您正在尝试将其分配给 Iterator<Object>
的引用。参考 JSONObject.
对于初学者来说,这个警告不会伤害到你。这只是一个提醒。
另外,请确保您的语法正确。应该是:
@SuppressWarnings("unchecked")(您可以放置在方法级别或您要抑制的行的正上方。
其次,了解代码的作用可能很重要,因为您的代码有效,但读起来有点奇怪。
警告基本上是说您有一个未知类型的迭代器,并且您假设它是一个对象迭代器。
随后在您的代码中将所有键转换为字符串。您也可以只创建一个字符串迭代器并跳过强制转换。
Iterator<String> keys = jsonMap.keys();
while (keys.hasNext()) {
String key = keys.next();
String value = jsonMap.getString(key);
map.put(key, value);
}
我在我的项目中使用 java。当我尝试从 json 对象获取密钥时,我收到此警告: Type safety: The expression of type Iterator needs unchecked conversion to conform to Iterator
我尝试通过 @SupressWarning('unchecked')
修复,但 Eclipse 仍然在文件中显示警告。我不知道出了什么问题。
public static HashMap<String, String> jsonToMap(final JSONObject jsonMap)
throws JSONException {
HashMap<String, String> map = new HashMap<String, String>();
Iterator<Object> keys = jsonMap.keys();
while (keys.hasNext()) {
String key = (String) keys.next();
String value = jsonMap.getString(key);
map.put(key, value);
}
return map;
}
JSONObject#Keys()
方法 returns Iterator
的原始类型,您正在尝试将其分配给 Iterator<Object>
的引用。参考 JSONObject.
对于初学者来说,这个警告不会伤害到你。这只是一个提醒。
另外,请确保您的语法正确。应该是:
@SuppressWarnings("unchecked")(您可以放置在方法级别或您要抑制的行的正上方。
其次,了解代码的作用可能很重要,因为您的代码有效,但读起来有点奇怪。
警告基本上是说您有一个未知类型的迭代器,并且您假设它是一个对象迭代器。
随后在您的代码中将所有键转换为字符串。您也可以只创建一个字符串迭代器并跳过强制转换。
Iterator<String> keys = jsonMap.keys();
while (keys.hasNext()) {
String key = keys.next();
String value = jsonMap.getString(key);
map.put(key, value);
}