为什么这个 Kotlin class 属性 而不是 public?

Why is this Kotlin class property not public?

我有一个应用程序经常使用用 Kotlin 编写的 classes,其他 classes 和他们用 Java.[=20= 编写的方法可以访问这些文件]

我在 Java 中有以下 class:

public class MyDataClass {
    public String color;
    public String action;
}

我决定将其移至 Kotlin:

class MyDataClass {
    var color: String = ""
    var action: String = ""
}

重新编译后,我现在收到以下错误消息:

/myPath/MyApp.java:[93,20] color has private access in myapp.command.MyDataClass

我在 action 中遇到了类似的错误。

根据 Kotlin reference,class 和属性(以及其他一些东西)的默认可见性修饰符是 public.

为什么这些属性被视为 private

因为它是一个带有 public getter 和 public setter 的私有字段。您不能直接在 Kotlin 中访问字段,一切都是属性。

参考:https://kotlinlang.org/docs/reference/properties.html#backing-fields