【发布时间】:2018-01-05 11:19:02
【问题描述】:
我有以下课程:
class Person(val name: String) {
private var surname: String = "Unknown"
constructor(name: String, surname: String) : this(name) {
this.surname = surname
}
}
但是当我想让 name 参数在第二个构造函数中不可变时:
constructor(val name: String, surname: String) : this(name) {
this.surname = surname
}
我有以下编译时错误:
Kotlin:不允许在辅助构造函数参数上使用 'val'
有人能解释一下为什么 Kotlin 编译器不允许这样做吗?
【问题讨论】:
-
name是不可变引用,因为它在主构造函数中声明为val。 -
kotlin 函数和构造函数中的所有参数都是不可变的,即
fun foo(name : String)转换为javapublic void foo(@NotNull final String name)
标签: constructor kotlin