存储ArrayList <! - ?扩展BaseModel - >在Realm中

时间:2017-01-31 17:40:49

标签: android realm realm-java

我有一个ArrayList<? extends BaseModel>,我想在Realm中存储。

我有几个扩展BaseModel的类,它们都存储在这个ArrayList中。如果我将它存储在磁盘上,Realm会做正确的事吗?每个儿童班可能拥有自己的其他成员和方法。

我可能只是尝试自己测试一下,但是我远离我的开发机器,所以我想不管怎么说,如果没有人先达到它就自己回答。

谢谢!

2 个答案:

答案 0 :(得分:1)

如果BaseModel类扩展copyToRealmOrUpdate()或者实施BaseModel接口,您可以按RealmObject存储RealmModel列表:

void storeListToRealm(List<? extends BaseModel> models) {
    realm.beginTransaction();
    realm.copyToRealmOrUpdate(models);
    realm.commitTransaction();
}

否则,您需要创建&#34; StoreModel&#34;,您可以将其存储到领域,以及从BaseModelStoreModel的映射。

答案 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 ...

在我看来,无论是传递子类还是超类都没有区别。