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

java, json-simple

Solution

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.

Problem

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,

Original source