Тип Предупреждение о безопасности с JTON Iterator
Моя проблема связана с получением Iterator из 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);
}
Точное предупреждение:
Тип безопасности: выражение типа Iterator нуждается в необработанном преобразовании, чтобы соответствовать Iterator
Итак, вопрос в том, как я могу искоренить это предупреждение?
Большое спасибо!
Ответы
Ответ 1
Я понимаю, что это старый поток, но для будущих поисковиков...
вы также можете вывести общий тип и применить возвращаемые методы итератора...
Iterator<?> i = jsonList.keys();
while(i.hasNext())
{
String next = (String) i.next();
...
Ответ 2
Когда вы смешиваете свой код со старыми устаревшими API-интерфейсами, вы можете получить такие предупреждения. Если вы действительно хотите "искоренить" предупреждение, вы можете использовать аннотацию SuppressWarnings. Хорошая практика оставить комментарий рядом с подавленным предупреждением. В вашем случае это может выглядеть так:
@SuppressWarnings("unchecked") //Using legacy API
Iterator<String> i = jsonList.keys();
Ура!