无法在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() } }