ArrayList的迭代器错误:java.util.LinkedHashMap无法强制转换为MyObject
Android中存在以下问题:我将一些数据作为ArrayList存储在Couchbase lite文档中:ArrayList的迭代器错误:java.util.LinkedHashMap无法强制转换为MyObject,java,android,arraylist,couchbase-lite,Java,Android,Arraylist,Couchbase Lite,Android中存在以下问题:我将一些数据作为ArrayList存储在Couchbase lite文档中: ArrayList<FluxDocReg> list_flux = (ArrayList<FluxDocReg>)doc.getProperty("flux"); if (list_flux == null) list_flux = new ArrayList<FluxDocReg>(); FluxDocReg flux = new FluxD
ArrayList<FluxDocReg> list_flux = (ArrayList<FluxDocReg>)doc.getProperty("flux");
if (list_flux == null)
list_flux = new ArrayList<FluxDocReg>();
FluxDocReg flux = new FluxDocReg();
//.....
list_flux.add(flux);
//save 'list_flux' in document
...
所以直到我有一个LinkedHashedMap对象的数组列表而不是FluxDocReg
接下来,我阅读属性:
if (documentBD != null && documentBD.getProperty("flux") != null)
{
ArrayList<FluxDocReg> list_flux = ArrayList<FluxDocReg>)documentBD.getProperty("flux");
///*****there are some objects in ArrayList, each of type LinkedHashedMap instead of FluxDocReg
for (int i = 0; i < list_flux.size(); i++)
{
****ERROR**** FluxDocReg flux = (FluxDocReg)list_flux.get(i);
}
}
当它尝试强制转换FluxDocReg flux=FluxDocReglist\u flux.geti时,我得到一个错误
我知道ArrayList中有一些对象,每种类型都是LinkedHashedMap而不是FluxDocReg
我做错了什么?我该如何修复它
谢谢,
Catalin显然,泛型列表中有一种称为Java类型擦除的方法,所以我必须找到一种解决方法。类似于此,涉及到JSON的反射和转换:
List<FluxDocRegInfo> list_flux = null;
if (obj != null) {
//USING REFLECTION FOR AVOIDING TYPE ERASURE
Type listType = new TypeToken<ArrayList<FluxDocRegInfo>>() {}.getType();
list_flux = new Gson().fromJson(obj.toString(), listType);
}
else //flux is null
{
list_flux = new ArrayList<FluxDocRegInfo>();
}
///add something to the list
list_flux.add(flux);
JsonElement element = new Gson().toJsonTree(list_flux, new com.google.common.reflect.TypeToken<List<FluxDocRegInfo>>() {}.getType());
JsonArray jsonArray = element.getAsJsonArray()
为什么在FluxDocReg的数组列表中有LinkedHashedMap?如果它是一个具有泛型类型的列表,您也不必强制转换它……您在documentBD中把flux放在哪里了?问题可能就在那里。好吧,LinkedHashedMap而不是FluxDocReg意味着当我调试时,该ArrayList中的元素的类型是LinkedHashedMap而不是预期的通用FluxDocReg错误日志和任何解决方案是什么?您能够简单地检索单个条目并查看内容吗?