Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

unchecked call to add(E) as a member of the raw type ArrayList and HashMap

I have the following function that uses org.json.simple to create JSON object.

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;
}

However, I keep getting this warning when I use lint checker.

[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");

I have tried to use the generic type. HashMap uses generics, but the other objects JSONObject JSONArray don't.

Many thanks for any suggestions,

like image 341
ant2009 Avatar asked Jul 03 '14 08:07

ant2009


1 Answers

You are getting this warning because the library uses raw type collections internally. To hide this warning you annotate your method with @SuppressWarnings("unchecked").

If you want to use json library with generics support. You can go for Google GSOn. I have used it myself in many projects. It is easy and uses generic collections.

like image 134
bitkot Avatar answered Sep 22 '22 10:09

bitkot