使用属性在Kotlin中定义默认构造函数和辅助构造函数

MPe*_*ier 4 constructor pojo kotlin

我正在尝试在Kotlin中创建一个简单的POJO(POKO?)类,使用默认的空构造函数和带参数的辅助构造函数,它们提供属性

这不会给我firstNamelastName属性:

class Person() {

    constructor(firstName: String?, lastName: String?) : this()
}
Run Code Online (Sandbox Code Playgroud)

这给了我属性,但它们在实例化后没有设置:

class Person() {

    constructor(firstName: String?, lastName: String?) : this()

    var firstName: String? = null
    var lastName: String? = null
}
Run Code Online (Sandbox Code Playgroud)

这给了我一个编译错误,说"不允许在辅助构造函数参数上使用'var'.":

class Person() {

    constructor(var firstName: String?, var lastName: String?) : this()
}
Run Code Online (Sandbox Code Playgroud)

那么,这是怎么做到的?如何拥有默认构造函数和带参数和属性的辅助构造函数?

zsm*_*b13 18

您可以只使用具有默认值的参数的主构造函数:

class Person(var firstName: String? = null, var lastName: String? = null)
Run Code Online (Sandbox Code Playgroud)


Ste*_*gin 5

有两种方法可以做到这一点。两者都需要valvar在初级。

Primary 中的默认参数

class Person(var firstName: String? = null, var lastName: String? = null)
Run Code Online (Sandbox Code Playgroud)

次要构造函数调用主要构造函数

class Person(var firstName: String?, var lastName: String?) {
    constructor() : this(null, null) {
    }
}
Run Code Online (Sandbox Code Playgroud)