从属性中注释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";