从属性中注释getter
在kotlin中,我们可以定义
var text: String
这将有一个getter和一个setter。 通过改变val
来移除setter很容易,但是如果我们有一个只有setter和getter的属性呢? 有什么办法可以创建一个注释,我们可以将其应用于将废弃吸气剂,使其他人不能使用它的text
?
最终目标是能够使用属性语法而不是调用setText
目前的解决方法我知道这实现了类似的结果:
var text: String @Deprecated(level = DeprecationLevel.ERROR, message = "Non readable property") get() = nonReadable() set() ...
我想知道是否有可能定义类似的东西
@SetterOnly var text: String set() ...
我可以告诉你现在没有办法在kotlin中完成这个功能。 因为错误KT-3110没有标记为Fixed
。
我在下面的kotlin中测试了下面的java代码,它只能通过setText
访问setter:
public class Property { public void setText(String text) {/**/} private String getText() { return "foo"; } }
这意味着你不能移除吸气剂/使吸气剂的能见度下降。 所以不可能像kotlin-allopen
插件那样摆脱getter
。 所以你可以做的一个可能的解决方案是编写你自己的kapt插件来引发编译时错误,例如:
@SetOnly var text:String = "foo";