在kotlin,我们可以定义
var text: String
将有一个getter和一个setter。通过将setter更改为val
来删除它很容易,但如果我们有一个只应该有setter且没有getter的属性呢?有没有办法创建一个我们可以应用于text
的注释,它会弃用getter,以便其他人不能使用它?
最终目标是能够使用属性语法而不是调用setText
当前的解决方法我知道这会产生类似的结果:
var text: String
@Deprecated(level = DeprecationLevel.ERROR, message = "Non readable property")
get() = nonReadable()
set() ...
我想知道是否可以定义类似于
的内容@SetterOnly
var text: String
set() ...
答案 0 :(得分:1)
我可以告诉你,现在无法在kotlin中完成此功能。由于错误KT-3110未标记为setText
。
我在下面的kotlin中测试了以下java代码,它只能通过public class Property {
public void setText(String text) {/**/}
private String getText() { return "foo"; }
}
访问setter:
getter
这意味着您无法移除吸气剂/降低吸气剂的可见度。所以不可能摆脱kotlin-allopen
之类的@SetOnly var text:String = "foo";
插件。所以你可以做的一个可能的解决方案是编写自己的kapt插件来抛出编译时错误,例如:
fastlane_version "fastlane 2.39.2"
答案 1 :(得分:0)
如果您不希望将此属性在外部使用,为什么不将其声明为
private var text :String =""