我的一个功能变得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