gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 14:23:13 26 4
gpt4 key购买 nike

我在 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 对象的 ArrayList 而不是 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 = (FluxDocReg)list_flux.get(i)”时出现错误

我知道ArrayList中有一些对象,每个对象的类型都是LinkedHashedMap而不是FluxDocReg...

我做错了什么以及如何解决它?

谢谢,卡塔林

最佳答案

显然,对于泛型(泛型列表)有一种称为“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()

关于java - ArrayList : java. util.LinkedHashMap 的迭代器错误无法转换为 MyObject,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26959735/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com