为什么Kotlin类的财产不公开?

Jon*_*n M 1 java access-modifiers kotlin

我有一个应用程序,该应用程序经常使用用Kotlin编写的类,其他类及其用Java编写的方法可以访问这些类。

我在Java中有以下课程:

public class MyDataClass {
    public String color;
    public String action;
}
Run Code Online (Sandbox Code Playgroud)

我决定将其移至Kotlin:

class MyDataClass {
    var color: String = ""
    var action: String = ""
}
Run Code Online (Sandbox Code Playgroud)

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

/myPath/MyApp.java:[93,20]颜色在myapp.command.MyDataClass中具有私有访问权限

我收到类似的错误action。

根据Kotlin参考,类和属性(以及其他一些东西)的默认可见性修饰符是public。

为什么将这些属性视为private?

Epi*_*rce 5

因为这是一个具有公共获取者和公共制定者的私有领域。您不能直接在Kotlin中访问字段,所有内容都是属性。

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

  • 好答案; 次要附加功能:您可以将属性标记为@JvmField,以将其编译为字段。 (3认同)