为什么这个 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
我有一个应用程序经常使用用 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