未经检查的转化

时间:2013-12-04 14:55:16

标签: java android json iterator

我不想压制警告。还有另一种处理此警告的方法吗?

“Iterator类型的表达式需要未经检查的转换以符合Iterator”

Iterator<String> it = schemaJSON.getJSONObject("body").keys();

4 个答案:

答案 0 :(得分:16)

您可以在此处找到答案:Type Safety warning with JSON Iterator

Iterator<?> it = schemaJSON.getJSONObject("body").keys();

while(it.hasNext())
{
     String next = (String) it.next();
     ...

答案 1 :(得分:5)

如果您只想删除警告,

  

“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();

答案 2 :(得分:1)

您无法避免此警告,因为Android JSONObject#keys()会返回“&#39; raw&#39; Iterator。但您可以使用@SuppressWarnings注释来抑制警告:

@SuppressWarnings("unchecked")
Iterator<String> it = schemaJSON.getJSONObject("body").keys();

答案 3 :(得分:0)

我认为keys()会返回Iterator个实例,而不是Iterator<String>,因此您要么离开String,要么只留下警告; - )