使用属性在 Kotlin 中定义默认构造函数和辅助构造函数
Defining a default constructor and a secondary constructor in Kotlin, with properties
我正在尝试在 Kotlin 中制作一个简单的 POJO(POKO?)class,它有一个默认的空构造函数和一个带参数的辅助构造函数,它提供属性
这没有给我 firstName
和 lastName
属性:
class Person() {
constructor(firstName: String?, lastName: String?) : this()
}
这给了我属性,但它们在实例化后没有设置:
class Person() {
constructor(firstName: String?, lastName: String?) : this()
var firstName: String? = null
var lastName: String? = null
}
这给了我一个编译错误,说“'var' on secondary constructor parameter is not allowed.”:
class Person() {
constructor(var firstName: String?, var lastName: String?) : this()
}
那么,这是怎么做到的呢?我怎样才能拥有默认构造函数和带参数和属性的辅助构造函数?
您可以只有一个主构造函数,其参数具有 default values:
class Person(var firstName: String? = null, var lastName: String? = null)
有两种方法可以做到这一点。两者都需要 val
和 var
在小学。
小学默认参数
class Person(var firstName: String? = null, var lastName: String? = null)
二级构造函数调用一级
class Person(var firstName: String?, var lastName: String?) {
constructor() : this(null, null) {
}
}
我正在尝试在 Kotlin 中制作一个简单的 POJO(POKO?)class,它有一个默认的空构造函数和一个带参数的辅助构造函数,它提供属性
这没有给我 firstName
和 lastName
属性:
class Person() {
constructor(firstName: String?, lastName: String?) : this()
}
这给了我属性,但它们在实例化后没有设置:
class Person() {
constructor(firstName: String?, lastName: String?) : this()
var firstName: String? = null
var lastName: String? = null
}
这给了我一个编译错误,说“'var' on secondary constructor parameter is not allowed.”:
class Person() {
constructor(var firstName: String?, var lastName: String?) : this()
}
那么,这是怎么做到的呢?我怎样才能拥有默认构造函数和带参数和属性的辅助构造函数?
您可以只有一个主构造函数,其参数具有 default values:
class Person(var firstName: String? = null, var lastName: String? = null)
有两种方法可以做到这一点。两者都需要 val
和 var
在小学。
小学默认参数
class Person(var firstName: String? = null, var lastName: String? = null)
二级构造函数调用一级
class Person(var firstName: String?, var lastName: String?) {
constructor() : this(null, null) {
}
}