我有一个Java类的格式:
class JavaClass {
private String name;
private Boolean x;
public String getName() { return name; }
public void setName(String name) { this.name = name }
public Boolean isX() { return x; }
public void setX(Boolean x) { this.x = x }
}
我在Kotlin中将这个类重写为一个数据类,其格式如下:
data class KotlinClass(
var nameNew: String? = null,
var xNew: Boolean = false
): JavaClass() {
init {
name = nameNew
x = xNew
}
}
为什么用x而不用名字?
我在Kotlin类中创建了一个名为x的新变量,该变量带有一个自定义getter和setter,它抱怨setter意外重写(这是可以理解的)。这意味着Java setter和getter在数据类中可见。那么,为什么setter在init块中不用于x,就像它用于name一样?