型変数を取得する私の関数の1つ。場合によってはそうなることもありますが、どうすればそれらを識別できますかjava.util.List<Test$MyClass>?java.util.List<java.lang.String>
if (type instanceof List) {
}
どちらもリストタイプですが、タイプが異なります。そのため、上記のコードは機能しません。2つのリストタイプを区別したいと思います。
私はそのために使用deserializerしています。
public class Data implements JsonDeserializer<ArrayList<MyClass1>> {
public ArrayList<MyClass1> myList1 = new ArrayList<MyClass1>();
public ArrayList<MyClass2> myList2 = new ArrayList<MyClass2>();
@Override
public ArrayList<MyClass1> deserialize(JsonElement json, Type type,
JsonDeserializationContext context) throws JsonParseException {
Debug.e("", type.toString());
ArrayList<Layoutmap> data = new ArrayList<Layoutmap>();
try {
if (json.isJsonObject()) {
// my stuff
return data;
} else {
return new Gson().fromJson(json, type);
}
} catch (Exception e) {
e.printStackTrace();
}
return data;
}
}
上記のコードは機能しpublic ArrayList<MyClass2> myList2 = new ArrayList<MyClass2>();、逆シリアル化することもできます。これはgoogleGsonmyList2の一部です。