私人获得者和Kotlin财产的公共二传手

如何在Kotlin拥有一个私人的吸气(或没有它),但有一个公共二传手?

var status private get 

不起作用的错误: Getter visibility must be the same as property visibility

在我的情况下,原因是Java互操作:我希望我的Java代码能够调用setStatus而不是getStatus

目前科特林不可能拥有一套比房地产更为明显的二传手。 问题跟踪器中有一个语言设计问题,请随时观看/投票或共享您的使用案例: https : //youtrack.jetbrains.com/issue/KT-3110

在当前的Kotlin版本(1.0.3)中,唯一的选择是有独立的setter方法,如下所示:

 class Test { private var name: String = "name" fun setName(name: String) { this.name = name } } 

如果您希望限制外部库访问getter,则可以使用internal可见性修饰符,使您仍然可以在库中使用属性语法:

 class Test { internal var name: String = "name" fun setName(name: String) { this.name = name } } fun usage(){ val t = Test() t.name = "New" }