我有以下的类:
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
。 - Eugen Pechanecfun foo(name : String)
在 Java 中转换为public void foo(@NotNull final String name)
。 - msrd0