Realm模型实际上是否需要getter和setter?

如果在Realm Model中实际需要获取者和设置者,我无法在任何地方找到它。 例如,https://realm.io/docs/java/latest/api/io/realm/RealmObject.html上的文档说

RealmObject唯一的限制是字段不允许是final,transient或volatile。 任何方法以及公共领域都是允许的。 在提供自定义构造函数时,必须声明一个不带参数的公共构造函数并将其设为空。

用Ignore注解的字段没有这些限制,并且不需要getter或setter。

这似乎暗示它对于不被忽略的字段的getter和setter是必需的。 但是,https://realm.io/docs/java/latest/#customizing-objects上的文档说

可以像使用POJO一样使用RealmObjects。 从RealmObject扩展,你可以让这些字段公开,并使用简单的赋值而不是setter和getter。

然后显示没有任何getter和setter的Realm Model的代码,而是使用我们应该使用的公共字段。 真? 我认为Realm甚至没有在实际领域存储任何价值,所以从他们读取和写入可能是一个坏主意? 我的意思是他们的调试文档https://realm.io/docs/java/latest/#debugging状态:

不幸的是,这些值是错误的,因为字段值没有被使用。 Realm在后台创建代理对象并覆盖获取者和设置者,以便访问Realm中的持久数据

那么有人请赐教吗? 我可以跳过吸气剂和吸附剂并坚持使用公共领域吗? 有没有关于此的全面文档?


public字段在大多数情况下工作,并且自从Realm 2.0.0以来,它们甚至可以在RealmObjects的构造函数中工作(允许“默认值”),并且在直接访问属性的情况下工作。

例如,

SomeObject obj = results.get(i);
obj.blah = "Blahblah";

这很有效,因为受管理的RealmObjects的字段访问由Realm-Transformer转换为代理getter / setter调用(在这种情况下,转换为realmSet$blah方法)。

从0.88.0开始,Realm开始作为Gradle插件提供时就是这种情况。

但是,一个主要限制是代理字段访问不能在检测测试中运行,因为androidTestCompile作用域不会运行转换器。

链接地址: http://www.djcxy.com/p/23681.html

上一篇: Does Realm models actually require getters and setters?

下一篇: How to automatically generate getters and setters in Android Studio