我是 kotlin 的新手,我正在尝试创建这种 Java 情况:
protected String aVariable;
public setAVariable(String aValue){
aVariable = aValue;
}
如果我尝试使用不同的修饰符指定 setter,则会出现错误。我也试过这个:
protected var aVariable: String? = null
fun setAVariable(value: String?){
aVariable = value
}
但它告诉我已经存在具有不同修饰符的相同方法(它是默认的)
我可以只更改 setter 方法名称,但我想避免这种情况。有什么办法可以做到这一点吗?
最佳答案
您可能想在 kotlin 引用资料中查找 getters and setters。
在那里您可以看到如何在可见性方面覆盖或更改 setter/getter,例如:
// public var with private setter:
var demo : String = ""
private set
现在关于您想要拥有公共(public) setter 但 protected getter 的特定情况,您可能认为以下方法可行:
private var demo : String = ""
public set
但这不起作用。 Kotlin 然后提示
Setter visibility must be the same or less permissive than property visibility
。所以:使用 Kotlin 标准意味着这是不可能的。当然,您可以使用任何其他可公开访问的方法,并从那里设置适当的属性,例如:private var demo : String = ""
fun overwriteDemo(s : String) {
demo = s
}
关于Kotlin:带有公共(public) setter 的 protected 变量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53535750/