Введите предупреждение о безопасности с помощью JSON Iterator - PullRequest
32 голосов
/ 28 ноября 2010

Моя проблема связана с получением итератора из 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

Итак, вопрос в том, как я могу устранить это предупреждение?

Большое спасибо!

Ответы [ 2 ]

95 голосов
/ 07 февраля 2012

я понимаю, что это старый поток, но для будущих пользователей ...

вы также можете вывести обобщение и привести результаты методов итератора ...

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

while(i.hasNext())
{
    String next = (String) i.next();
    ...
4 голосов
/ 28 ноября 2010

Когда вы смешиваете свой код со старыми унаследованными API, вы можете получать подобные предупреждения. Если вы действительно хотите «искоренить» предупреждение, вы можете использовать аннотацию SuppressWarnings. Рекомендуется оставлять комментарий рядом с скрытым предупреждением. В вашем случае это может выглядеть так:

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

ура!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...