java - 为什么这个 Kotlin 类属性不公开?

标签 java kotlin access-modifiers

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

我在 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 ,类和属性(以及许多其他内容)的默认可见性修饰符是 public

为什么这些属性被视为私有(private)

最佳答案

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

引用:https://kotlinlang.org/docs/reference/properties.html#backing-fields

关于java - 为什么这个 Kotlin 类属性不公开?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55106505/

相关文章:

java - 为什么我得到 java.lang.UnsatisfiedLinkError : Can't find dependent libraries?

java - 为什么以下调用 "substring"会失败?

Android POI 读取 Microsoft Word 文档时出错 : Provider com. bea.xml.stream.EventFactory 未找到

object - 为什么我们不能在Kotlin的Singleton类(对象)中使用 protected 访问修饰符

java - 如何限制我的方法可见性

c# - 如何使用正确的可见性修饰符来实现这个类结构?

java - 为什么我的 Jersey 过滤器没有被触发?

java - 如何在 Hibernate 中从非实体子类中持久化实体

android - 如何在 Mockito3.x 中使用 PowerMock?

java - Kotlin 中字段的 `open` 关键字是什么?