0

我使用 Android Studio 的 Kotlin 插件将我的 Java 类转换为 Kotlin。问题是它仍然不是 Kotlin 风格。我想改用 Kotlin 数据类。但是,每当我使用主要和次要构造函数创建它时,它都不起作用。在我的情况下,正确的 DATA 类实现是什么?

class Task {

    @SerializedName("_id")
    var id: String? = null
    @SerializedName("text")
    var taskTitle: String? = null
    @SerializedName("completed")
    var isCompleted: Boolean? = null

    constructor(taskTitle: String) {
        this.taskTitle = taskTitle
    }

    constructor(taskTitle: String, completed: Boolean?) {
        this.taskTitle = taskTitle
        this.isCompleted = completed
    }

    constructor(id: String, taskTitle: String, isCompleted: Boolean?) {
        this.id = id
        this.taskTitle = taskTitle
        this.isCompleted = isCompleted
    }

}
4

1 回答 1

6

Kotlin 在构造函数中引入了参数的默认值。您可以使用它们使用 Kotlin 仅使用一个构造函数来创建数据类。它看起来像这样

data class Task(    
    @SerializedName("_id") var id: String? = null,
    @SerializedName("text") var taskTitle: String? = null,
    @SerializedName("completed") var isCompleted: Boolean? = null
)

因此,您可以将数据类与任意数量的参数一起使用,例如:

var task = Task(taskTitle = "title")
var task = Task("id", "title", false)
var task = Task(id = "id", isCompleted = true)

您甚至可以替换参数顺序

var task = Task(taskTitle = "title", isCompleted = false, id = "id")
于 2017-06-09T18:57:39.503 回答