无法在RealmObject子类中创建ArrayList
我有一个类是RealmObject的子类,我想创建里面那个类将被反序列化的数组列表,当我开始建设项目编译时出现错误
Error:Type 'java.util.ArrayList<my_package.MessageContainerObject.Test>' of field 'messages' is not supported
这是我的班
open class MessageContainerObject : RealmObject() { @SerializedName("from") var from = "" @SerializedName("messages") var messages = ArrayList<Test>() class Test }
如果我删除父类一切工作正常
您可以将消息定义为RealmList
从文档:
RealmList有两种模式:托管和非托管模式。 在托管模式下,所有对象都保持在Realm中,在非托管模式下,它作为普通的ArrayList工作。
https://realm.io/docs/java/latest/api/io/realm/RealmList.html
ArrayList
不是Realm对象支持的字段类型。 你可以在这里看到可用的类型,也许RealmList
会适合你的用例?
你不能。 境界只接受RealmList
。 但是你可以使用RealmList
并编写一个自定义的jsonAdapter,将其转化为RealmList
,反之亦然。
open class MessageContainerObject : RealmObject() { @SerializedName("from") var from = "" @SerializedName("messages") var messages = RealmList<Test>() } class RealmListAdapter<T : RealmModel>( val elementAdapter: JsonAdapter<T>) : JsonAdapter<RealmList<T>>() { companion object { val FACTORY: Factory = Factory { type, annotations, moshi -> val rawType: Class<*> = Types.getRawType(type) if (rawType == RealmList::class.java) { val elementType = Types.collectionElementType(type, RealmList::class.java) val elementAdapter = moshi.adapter<RealmModel>(elementType) return@Factory RealmListAdapter(elementAdapter).nullSafe() } null } } override fun fromJson(reader: JsonReader): RealmList<T> { val result = RealmList<T>() reader.beginArray() while (reader.hasNext()) { result.add(elementAdapter.fromJson(reader)) } reader.endArray() return result } override fun toJson(writer: JsonWriter, value: RealmList<T>) { writer.beginArray() for (element in value) { elementAdapter.toJson(writer, element) } writer.endArray() } }