10

Eclipse はタイプ セーフの警告を表示し、それを根絶するためにほぼすべてのことを試みました (もちろん、それを抑制することもできます) が、残念ながら成功しませんでした。
タイプ セーフの警告が表示されないようにコードを変更する方法を知っていますか。それとも@SuppressWarnings("unchecked")唯一の方法ですか?

ArrayList<String> arrayList= (ArrayList<String>) Classname.getArrayList();      
JSONArray obj = new JSONArray();
obj.addAll(arrayList); 

次の最後の行にタイプの安全警告が表示されます。

型の安全性: メソッド addAll(Collection) は生の型 ArrayList に属します。ジェネリック型 ArrayList への参照はパラメータ化する必要があります

JSONArray は からorg.json.simple.JSONArrayです。別のパッケージをお勧めしますか?

4

5 に答える 5

3

json で作業したい場合は、このライブラリにアクセスしてください。このライブラリには、https://code.google.com/p/google-gson/が適切にサポートされています。

これは例です:

Gson gson = new Gson();
Collection<Integer> ints = Lists.immutableList(1,2,3,4,5);

(Serialization)
String json = gson.toJson(ints); ==> json is [1,2,3,4,5]

ありがとう

于 2013-08-20T12:45:40.023 に答える
3

org.json および org.json.simple JSON パーサーは、その下に生の型のコレクションを使用します。優れたGenericsサポートを探している場合は、Google Gsonを試してください。ArrayListGson を使用してジェネリックをシリアル化する方法は次のとおりです。

Gson gson = new Gson();

ArrayList<String> arrayList= (ArrayList<String>) ClassName.getArrayList();

// Serializing to a JSON element node
JsonElement jsonElement = gson.toJsonTree(arrayList);
System.out.println(jsonElement.isJsonArray()); // true

// Or, directly to JSON string
String json = gson.toJson(arrayList);
System.out.println(json);

Genericsをそのままにして、同じ JSON 文字列を逆シリアル化する方法を次に示します。

Type type = new TypeToken<ArrayList<String>>(){}.getType();
ArrayList<String> arrayList = gson.fromJson(json, type);
于 2013-08-20T12:56:58.443 に答える
0

のドキュメントから、生の型のJSONArrayように見えますextends ArrayList(ジェネリック型パラメーターはありません)。これは、非汎用のレガシー コードを処理する例です。続行する唯一の方法は、JSONArrayが何らかの s を受信することを予期していることを十分に確認してStringから、警告を抑制することです。

(これを修正する実際の方法はJSONArray、ジェネリックを使用するように更新することですが、それまでの間、生の型を使用する必要があります。)

于 2013-08-20T12:42:09.637 に答える