我已经阅读了很多关于Realm的内容,它似乎是一个非常简洁的工具,我很乐意尝试一下;但是,我已经在几个不同的地方读到Android版本不支持RealmObject子类的非静态方法。
这在their documentation中并不完全清楚。这意味着不支持非静态方法,但在FAQ部分中,为什么我需要为所有字段设置getter和setter?,它们使用public ,非静态方法。
此外,它在this文章中非常清楚地表明:
在模型类中使用任何其他方法会出现编译错误。想一想......
是的..您不能使用toString(),静态方法,甚至不能使用模型类中的其他行为方法。
所以我有点困惑。我知道我不能有自定义的getter / setter;我不喜欢它,但它不是一个交易破坏者。但是不能拥有任何非静态实例方法是另一回事。
那是哪个?我可以在RealmObject子类中使用非静态实例方法吗?
感谢。
答案 0 :(得分:4)
你是对的,你不能有自定义的getter和setter。
toString()
equals()
要清楚,RTFM:
请注意,getm和setter将被RealmObjects在后面使用的生成的代理类覆盖,因此您添加到getter&的任何自定义逻辑都将被覆盖。实际上不会执行setter 的限制强>
由于代理类如何覆盖模型类中的getter和setter,因此对模型类中允许的内容有一些限制。由于代理类如何覆盖模型中的getter和setter 类对模型中允许的内容有一些限制 类:
Only private instance fields. Only default getter and setter methods. Static fields, both public and private. Static methods. Implementing interfaces with no methods.
这意味着目前无法扩展任何其他内容 比RealmObject或覆盖像toString()或equals()这样的方法。 此外,它只能实现接口。