房间实体默认值VS辅助构造函数

时间:2019-07-15 12:47:00

标签: android kotlin

严格来说是优先事项,还是有理由使用一种方法而不是另一种方法?

默认值

@Entity
data class Folder(
        @PrimaryKey
        val id: String = UUID.randomUUID().toString(),
        val parentId: String?,
        val title: String?,
        val pinned: Boolean = false
)

// usage
Folder(parentId = null, title = "Folder")

辅助构造函数

@Entity
data class Folder(
        @PrimaryKey
        val id: String,
        val parentId: String?,
        val title: String?,
        val pinned: Boolean
) {
    @Ignore
    constructor(parentId: String?, title: String?) : this(
            UUID.randomUUID().toString(), parentId, title, false
    )
}

// usage
Folder(null, "Folder")

如果这是一个琐碎的问题,请原谅我,我只是想避免遇到任何麻烦,因为我还没有与Kotlin或Room一起发布应用程序。应用上线。

1 个答案:

答案 0 :(得分:0)

如果要在惯用的Kotlin上编写代码,则必须使用带有“默认值”的解决方案。 还可以使用“命名参数”:

println(Folder(parentId = 100, title = "anything"))

此外,如果您希望Room为实体分配自动ID,则可以设置@PrimaryKey autoGenerate属性。