【发布时间】:2018-04-29 15:36:51
【问题描述】:
我一直在探索Room 数据库对象映射库,我发现了一些奇怪的东西。
正如this 回答所暗示的那样,实体数据模型不能具有不可变的属性。
但我检查了google's persistent example with kotlin,Room 也适用于不可变属性。请检查示例中的this 数据类。
这种行为的原因可能是什么?
如果我们可以创建不可变值(val 属性),这可能是一个很好的功能,因为这会限制程序员在创建对象后更改唯一标识符,例如 id。
【问题讨论】:
-
我不是专门研究 Room 的专家,但我相信如果您想使用
val,您需要为所有内容提供默认值,因为它可能依赖于默认构造函数或其他东西,除非这最近发生了变化。此外,一旦设置值,您将无法更改它们。 -
@JanVladimirMostert 感谢您的回复。我确实使用默认值进行了测试,但问题似乎仍然存在
标签: android sqlite kotlin immutability android-room