непроверенный вызов add(E) как элемента ArrayList необработанного типа и HashMap

#java #json-simple

#java #json-простой

Вопрос:

У меня есть следующая функция, которая использует org.json.simple для создания объекта JSON.

 public JSONObject createJSONRequest() {
    // /* Create JSON Objects */
    JSONObject jsonObject = new JSONObject();
    Map<String, String> map = new HashMap<String, String>();

    map.put(ACCESS_TOKEN_KEY, mAccessToken);            
    map.put(SESSION_ID_KEY, mSessionId);
    map.put(SNAPZ_ID_KEY, mSnapzId);
    map.put(EMAIL_KEY, mEmail);
    map.put(EMAIL_PWD_KEY, mEmailPwd);

    JSONArray list = new JSONArray();
    list.add(map);
    jsonObject.put("parameters", list);
    jsonObject.put("function", "verifyEmail");

    return jsonObject;
}
  

Однако я продолжаю получать это предупреждение, когда использую средство проверки ворса.

 [unchecked] unchecked call to add(E) as a member of the raw type ArrayList
        list.add(map);
                ^
where E is a type-variable: E extends Object declared in class ArrayList

 warning: [unchecked] unchecked call to put(K,V) as a member of the raw type HashMap
        jsonObject.put("parameters", list);
                      ^
where K,V are type-variables:
    K extends Object declared in class HashMap
    V extends Object declared in class HashMap

warning: [unchecked] unchecked call to put(K,V) as a member of the raw type HashMap
        jsonObject.put("function", "verifyEmail");
  

Я пытался использовать универсальный тип. HashMap использует общие элементы, но другие объекты JSONObject JSONArray этого не делают.

Большое спасибо за любые предложения,

Комментарии:

1. Откуда JSONArray, JSONObject?

2. Предположение: См. code.google.com/p/json-simple/source/browse/trunk/src/main/java /… и code.google.com/p/json-simple/issues/detail?id=84 (это означает, что вы не можете избежать этих предупреждений, за исключением их подавления …)

3. @Marco13 Спасибо. — И это было бы так легко написать class JSONArray<E> extends ArrayList<E> { .

4. @ant2009 Если это из библиотеки json-simple (как я предполагаю), то вы могли бы рассмотреть возможность добавления json-simple тега (и я могу превратить комментарий в ответ …)

Ответ №1:

Вы получаете это предупреждение, потому что библиотека использует коллекции необработанных типов внутри. Чтобы скрыть это предупреждение, вы комментируете свой метод с помощью @SuppressWarnings("unchecked") .

Если вы хотите использовать библиотеку json с поддержкой generics. Вы можете использовать Google GSOn. Я сам использовал это во многих проектах. Это просто и использует универсальные коллекции.

Комментарии:

1. итак, ответ «никогда не использовать com.googlecode.json-simple «, потому что кто будет комментировать все в коде?