静态字段未被Realm Java识别为可持久化

时间:2016-07-22 03:55:18

标签: java android realm

Realm正在给我一个错误,抱怨我的班级"必须至少有一个可持续的字段"。这个类有1个静态字段来存储我的应用程序中的首选项选项,以及一些其他静态方法。

缩短代码:

public class StreamingPreferences extends RealmObject {
     public static RealmList<RealmString> serviceStreamingPreferences;
}

Realm appears to support static fields和我的自定义RealmString类扩展了RealmObject,RealmList也是如此。我对Realm来说是全新的,这是我模型中唯一可以在不添加非静态字段的情况下开始工作的部分。有什么想法吗?

2 个答案:

答案 0 :(得分:1)

支持静态字段,因为RealmObject类允许使用静态字段。

他们会自动被忽略,但他们并没有坚持下去。

this comment中所述。

答案 1 :(得分:0)

错误消息 - &#34;必须包含至少1个可持久字段&#34;

根本原因 - 在RealmObject类中仅使用静态字段

原因 - Realm允许我们在RealmObject类中拥有静态字段,但由于静态字段不属于Class的实例(它们属于Class),因此静态字段具有静态字段在给定类的所有实例中使用相同的副本。由于Realm忽略所有静态字段,因此它不接受仅具有静态字段的RealmObject,我们必须将至少一个非静态字段ALONG与一个或多个静态字段放在一起。

历史 - 正如此处https://github.com/realm/realm-java/issues/464所讨论的,Realm用于处理静态字段作为RealmObject的一部分,但在讨论团队之后,Realm同意忽略所有静态字段。 / p>

这是允许的

public class Test extends RealmObject {
    /* One non static filed */
    private int test1;
    /* One or more static filed(s) */
    public static int test2;
}

这是不允许的

public class Test extends RealmObject {
    /* Only static field(s) */
    public static int test1;
}