【发布时间】:2017-10-28 01:09:42
【问题描述】:
我正在与 Room 持久性库集成。我在 Kotlin 中有一个数据类,例如:
@Entity(tableName = "story")
data class Story (
@PrimaryKey val id: Long,
val by: String,
val descendants: Int,
val score: Int,
val time: Long,
val title: String,
val type: String,
val url: String
)
@Entity 和 @PrimaryKey 注释用于 Room 库。当我尝试构建时,它失败并出现错误:
Error:Cannot find setter for field.
Error:Execution failed for task ':app:compileDebugJavaWithJavac'.
> Compilation failed; see the compiler error output for details.
我也尝试过提供默认构造函数:
@Entity(tableName = "story")
data class Story (
@PrimaryKey val id: Long,
val by: String,
val descendants: Int,
val score: Int,
val time: Long,
val title: String,
val type: String,
val url: String
) {
constructor() : this(0, "", 0, 0, 0, "", "", "")
}
但这也不起作用。需要注意的是,如果我将这个 Kotlin 类转换为带有 getter 和 setter 的 Java 类,它就可以工作。任何帮助表示赞赏!
【问题讨论】:
-
在谷歌示例中的github.com/googlesamples/android-architecture-components/blob/… 中,不可变属性可以正常工作。有人可以分析原因吗?会不会是bug?
标签: android kotlin android-room