使用 JSON 迭代器键入安全警告

2022-09-01 04:47:51

我的问题来自从JSONObject获取迭代器。

以最简单的形式生成错误的代码:

String json = client.retrieveList();
JSONObject jsonList = new JSONObject(json);
Iterator<String> i = jsonList.keys();

while(i.hasNext())
{
    String next = i.next();
    JSONArray jsonArray = jsonList.getJSONArray(next);
    // Do stuff with jsonArray, example: jsonArray.getString(0), jsonArray.getString(1);
}

确切的警告是:类型安全:类型迭代器的表达式需要未经检查的转换才能符合迭代器

所以问题是,我该如何根除这个警告?

非常感谢!


答案 1

我意识到这是一个旧的线程,但对于未来的搜索者...

你还可以推断一个泛型并强制转换迭代器方法的返回...

Iterator<?> i = jsonList.keys();

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

答案 2

当您将代码与旧的旧版 API 混合使用时,可能会收到此类警告。如果您真的想“根除”警告,则可以使用抑制警告注释。最好在禁止显示的警告旁边留下注释。在你的情况下,这可能看起来像这样:

@SuppressWarnings("unchecked") //Using legacy API
Iterator<String> i = jsonList.keys();

干杯!