Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/187.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ArrayList的迭代器错误:java.util.LinkedHashMap无法强制转换为MyObject_Java_Android_Arraylist_Couchbase Lite - Fatal编程技术网

ArrayList的迭代器错误:java.util.LinkedHashMap无法强制转换为MyObject

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

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 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错误日志和任何解决方案是什么?您能够简单地检索单个条目并查看内容吗?