Java 为什么这个Kotlin类属性不是公共的?

Java 为什么这个Kotlin类属性不是公共的?,java,kotlin,access-modifiers,Java,Kotlin,Access Modifiers,我有一个应用程序,它经常使用用Kotlin编写的类,其他类和它们用Java编写的方法可以访问这些类 我用Java学习了以下课程: public class MyDataClass { public String color; public String action; } 我决定把它搬到科特林: class MyDataClass { var color: String = "" var action: String = "" } 重新编译后,我现在收到以下错

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

我用Java学习了以下课程:

public class MyDataClass {
    public String color;
    public String action;
}
我决定把它搬到科特林:

class MyDataClass {
    var color: String = ""
    var action: String = ""
}
重新编译后,我现在收到以下错误消息:

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

对于
操作
,我得到了类似的错误

根据,类和属性(以及一系列其他内容)的默认可见性修饰符是
public


为什么这些属性被视为
private

因为它是一个带有公共getter和公共setter的私有字段。您不能直接访问Kotlin中的字段,所有内容都是属性


请参阅:

,因为它是一个带有公共getter和公共setter的私有字段。您不能直接访问Kotlin中的字段,所有内容都是属性。谢谢。“一切都是属性”是什么意思?如果您声明
var something:String
,那么它将始终是“私有字段+公共访问器”。在Java中,人们通常称这些为“属性”,至少我记得是这样;次要添加:您可以将属性标记为
@JvmField
以将其编译为字段。啊,是的,确实如此。我不知道为什么我忘了提到它。@EpicPandaForce非常感谢您的评论,添加JvmField注释解决了让我头疼的问题