在RealmObject中使用Final Field的正确方法

时间:2017-06-12 02:41:31

标签: java android realm final

我想在RealmObject中使用最后一个字段,如private final int fieldName。因为,我想有效地使用常量和方法。

CleanTime.java

public class CleanTime extends RealmObject {

    private final int NIGHT_TIME_LECTURE_MINUTE_LENGTH = 50;
    private final int NIGHT_TIME_LECTURE_BREAK_TIME_MINUTE = 10;

    // and other field

    public CleanTime() {
        // Constructor which use NIGHT_TIME_LECTURE_MINUTE_LENGTH
    }

    // and other methods
}

但问题是我的Logcat抛出错误,上面写着“此类包含非法的最终字段”

所以,我找到了一些关于领域的文件,并得出了它不起作用的原因。

在Realm官方文档中..

  

目前, Realm模型不支持最终,瞬态和易失性字段。这主要是为了避免对象在Realm或非托管方面的行为方式之间存在差异。

所以,我试图解决这个问题,下面的代码已经完成,正在使用Instance Initializer

CleanTime.java

public class CleanTime extends RealmObject {

    private int NIGHT_TIME_LECTURE_MINUTE_LENGTH;
    private int NIGHT_TIME_LECTURE_BREAK_TIME_MINUTE;

    // and other field

    { // Instance Initializer
        NIGHT_TIME_LECTURE_MINUTE_LENGTH = 50;
        NIGHT_TIME_LECTURE_BREAK_TIME_MINUTE = 10;
    }

    public CleanTime() {
        // Constructor which use NIGHT_TIME_LECTURE_MINUTE_LENGTH
    }

    // and other methods
}

但我很好奇这是否是正确,领域推荐使用最终字段的方式。我做对了吗?有没有更好的主意?

啊,上面的代码与NIGHT_TIME_LECTURE_MINUTE_LENGTH = 50相同,我想修复NIGHT_TIME_LECTURE_MINUTE_LENGTH字段,不希望它被更改

0 个答案:

没有答案