我有一个ArrayList<? extends BaseModel>
,我想在Realm中存储。
我有几个扩展BaseModel的类,它们都存储在这个ArrayList中。如果我将它存储在磁盘上,Realm会做正确的事吗?每个儿童班可能拥有自己的其他成员和方法。
我可能只是尝试自己测试一下,但是我远离我的开发机器,所以我想不管怎么说,如果没有人先达到它就自己回答。
谢谢!
答案 0 :(得分:1)
如果BaseModel
类扩展copyToRealmOrUpdate()
或者实施BaseModel
接口,您可以按RealmObject
存储RealmModel
列表:
void storeListToRealm(List<? extends BaseModel> models) {
realm.beginTransaction();
realm.copyToRealmOrUpdate(models);
realm.commitTransaction();
}
否则,您需要创建&#34; StoreModel&#34;,您可以将其存储到领域,以及从BaseModel
到StoreModel
的映射。
答案 1 :(得分:0)
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 ...
在我看来,无论是传递子类还是超类都没有区别。