我有一个ArrayList<? extends BaseModel>
我想存储在 Realm 中的内容。
我有几个扩展 BaseModel 的类,它们都存储在这个 ArrayList 中。如果我将它存储在磁盘上,Realm 会做正确的事情吗?每个子类可能有它自己的附加成员和方法。
我可能应该自己尝试测试这个,但我远离我的开发机器,所以我想无论如何我都会问,如果没有人先得到它,我会自己回答。
谢谢你!
我有一个ArrayList<? extends BaseModel>
我想存储在 Realm 中的内容。
我有几个扩展 BaseModel 的类,它们都存储在这个 ArrayList 中。如果我将它存储在磁盘上,Realm 会做正确的事情吗?每个子类可能有它自己的附加成员和方法。
我可能应该自己尝试测试这个,但我远离我的开发机器,所以我想无论如何我都会问,如果没有人先得到它,我会自己回答。
谢谢你!
BaseModel
您可以通过调用存储列表copyToRealmOrUpdate()
,如果BaseModel
扩展RealmObject
类或实现RealmModel
接口:
void storeListToRealm(List<? extends BaseModel> models) {
realm.beginTransaction();
realm.copyToRealmOrUpdate(models);
realm.commitTransaction();
}
否则,您需要创建“StoreModel”,您可以将其存储到领域,并从 映射BaseModel
到StoreModel
。
Realm 生成一个RealmModuleMediator
具有以下代码的类:
public String getTableName(Class<? extends RealmModel> clazz) {
checkClass(clazz);
if (clazz.equals(com.yourpackage.somemodel)) {
return io.realm.SomeModelRealmProxy.getTableName();
} else if (clazz.equals(com.yourpackage.anothermodel)) {
return io.realm.AnotherRealmProxy.getTableName();
} else if ...
在我看来,无论您传入子类还是超类都没有区别。