我不想压制警告。还有另一种处理此警告的方法吗?
“Iterator类型的表达式需要未经检查的转换以符合Iterator”
Iterator<String> it = schemaJSON.getJSONObject("body").keys();
答案 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
,要么只留下警告; - )