gpt4 book ai didi

annotations - 从属性中注释 getter

转载 作者:行者123 更新时间:2023-12-01 04:48:09 25 4
gpt4 key购买 nike

在 kotlin 中,我们可以定义

var text: String

它将有一个 getter 和一个 setter。通过将其更改为 val 可以轻松删除 setter ,但是如果我们有一个应该只有 setter 而没有 getter 的属性呢?有什么方法可以创建一个注释,我们可以应用到 text这将弃用 setter/getter ,因此其他人无法使用它?

最终目标是能够使用属性语法而不是调用 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"; }
}

这意味着您无法移除 setter/getter /降低 setter/getter 的可见性。所以不可能摆脱 getterkotlin-allopen插入。因此,您可以做的一种可能的解决方案是编写自己的 kapt 插件以引发编译时错误,例如:
@SetOnly var text:String = "foo";

关于annotations - 从属性中注释 getter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44743907/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com