【发布时间】:2013-12-21 03:04:34
【问题描述】:
我不想取消警告。还有其他方法可以处理此警告吗?
"Iterator 类型的表达式需要未经检查的转换才能符合 Iterator"
Iterator<String> it = schemaJSON.getJSONObject("body").keys();
【问题讨论】:
标签: java android json iterator
我不想取消警告。还有其他方法可以处理此警告吗?
"Iterator 类型的表达式需要未经检查的转换才能符合 Iterator"
Iterator<String> it = schemaJSON.getJSONObject("body").keys();
【问题讨论】:
标签: java android json iterator
您可以在这里找到答案:Type Safety warning with JSON Iterator
Iterator<?> it = schemaJSON.getJSONObject("body").keys();
while(it.hasNext())
{
String next = (String) it.next();
...
【讨论】:
如果您只想删除警告,
"Iterator 类型的表达式需要未经检查的转换才能符合 Iterator"
然后这样做,
Iterator<String> it = (Iterator<String>)schemaJSON.getJSONObject("body").keys();
但这会导致新警告,但您的旧警告已被删除。
Type safety: Unchecked cast from Iterator to Iterator<String>
为了删除所有警告,
Iterator<?> it = schemaJSON.getJSONObject("body").keys();
while(it.hasNext())
{
String nextElement = (String) it.next();
【讨论】:
我认为keys() 返回一个Iterator 实例,而不是Iterator<String>,因此您要么离开String,要么只接受警告;-)
【讨论】:
您无法避免此警告,因为 android JSONObject#keys() 返回一个“原始”Iterator。但是您可以使用 @SuppressWarnings 注释来抑制警告:
@SuppressWarnings("unchecked")
Iterator<String> it = schemaJSON.getJSONObject("body").keys();
【讨论】: