我的一個功能變得Type變量。有時它可能是java.util.List<Test$MyClass>
或java.util.List<java.lang.String>
,那麼我如何識別它們?如何查詢android
if (type instanceof List) {
}
兩者都是列表類型但不同類型。所以上面的代碼不起作用。 我想區分兩種列表類型。
我使用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>();
和myList2
也是我想反序列化.. 它一部分的谷歌Gson。
你想在兩者之間進行區分列表類型? – tom 2013-03-24 11:54:56
恕我直言,這表明一個設計問題。你不應該有一種方法有時返回某些東西,而有些時候則有其他東西。 – 2013-03-24 12:01:19
同意JB Nizet。但如果你想比較每個元素出於某種原因,那麼你可以檢查我的答案。 – lokoko 2013-03-24 12:04:27