首页 > 解决方案 > Kotlin:私有 get 和 public set 的属性有意义吗?

问题描述

我是 Kotlin 的新手,我一直在尝试这种语言。在Kotlin in Action 中,它说如下:

默认情况下,访问器的可见性与属性的可见性相同。但是,如果需要,您可以通过在 get 或 set 关键字之前放置可见性修饰符来更改此设置。

我试图创建一个具有私有 getter 和公共 setter 的属性,如下所示:

class BackingField {
    var aProperty = 1
        private get
        set(value) {
            field = value + 1
        }
}

但是,IntelliJ 建议我删除private之前的修饰符get。是否有可能拥有带有私有 getter 和公共 setter 的公共财产?如果是这样,这种实体的一些常见应用是什么?如果不是,我们是否可以断定书中所说的部分是错误的?

标签: kotlin

解决方案


这本书本身没有错。因为您实际上可以更改 get 和 set 的可见性,但根据这个问题 ,set 不能比 get 更可见: Private getter and public setter for a Kotlin property


推荐阅读