小编NSa*_*ran的帖子

Kotlin:通过Kotlin中的Data类在Java类中设置私有布尔值.为什么我不能这样做?

我有一个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 }
}
Run Code Online (Sandbox Code Playgroud)

我将这个类重写为Kotlin中的一个Data类,格式如下:

data class KotlinClass(
    var nameNew: String? = null,
    var xNew: Boolean = false
): JavaClass() {

    init {
        name = nameNew
        x = xNew
    }
}
Run Code Online (Sandbox Code Playgroud)

当我这样做时,这种名称初始化不会产生问题,但我不能以这种方式初始化x.IDE抱怨x是不可见的.为什么用x而不用名字?

我在Kotlin类中创建了一个新变量,其名称为x,带有自定义getter和setter,并且它抱怨了setter的意外覆盖(这是可以理解的).这意味着Java setter和getter在Data类中可见.那么为什么setter没有在init块中用于x,就像它为名字做的那样?

java kotlin kotlin-android-extensions

6
推荐指数
1
解决办法
943
查看次数

标签 统计

java ×1

kotlin ×1

kotlin-android-extensions ×1