Kotlin:具有公共setter的受保护变量

Kotlin:具有公共setter的受保护变量,kotlin,Kotlin,我是kotlin的新手,我正在尝试创建这种java环境: protected String aVariable; public setAVariable(String aValue){ aVariable = aValue; } 如果我试图用不同的修饰符指定setter,我会得到一个错误。我也试过: protected var aVariable: String? = null fun setAVariable(value: String?){ aVariable = va

我是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参考中查找

在这里,您可以看到如何覆盖或更改setter/getter的可见性,例如:

// public var with private setter:
var demo : String = ""
    private set
现在,对于您希望使用公共setter但受保护getter的特定情况,您可能认为以下方法可行:

private var demo : String = ""
    public set
但这不起作用。Kotlin然后抱怨设置器可见性必须与属性可见性相同或更低。所以:使用Kotlin标准意味着这是不可能的。当然,您可以使用任何其他可公开访问的方法,并从中设置适当的属性,例如:

private var demo : String = ""
fun overwriteDemo(s : String) {
  demo = s
}

这里隐藏的唯一一件事就是如何获取变量,具体目标是什么?允许类的扩展程序访问该值,同时使其可以从外部写入。。它是。。。但不使用标准制定者;-)