Kotlin:带有公共设置器的受保护变量

时间:2018-11-29 09:30:53

标签: kotlin

我是Kotlin的新手,正在尝试创建这种Java情况:

protected String aVariable;

public setAVariable(String aValue){
    aVariable = aValue;
}

如果我尝试使用其他修饰符指定设置器,则会出现错误。我也尝试过:

protected var aVariable: String? = null

fun setAVariable(value: String?){
    aVariable = value
}

但是它告诉我,相同的方法已经存在,但使用了不同的修饰符(默认设置)

我可以只更改setter方法的名称,但我想避免这种情况。有什么办法可以做到吗?

1 个答案:

答案 0 :(得分:2)

您可能想在kotlin参考文献中查找getters and setters

您可以在其中看到如何替换或更改可见性,例如:

// public var with private setter:
var demo : String = ""
    private set

现在关于您想要拥有公共二传手但受保护的getter的特定情况,您可能认为以下方法会起作用:

private var demo : String = ""
    public set

但这不起作用。然后,科特林抱怨Setter visibility must be the same or less permissive than property visibility。因此:使用Kotlin标准意味着不可能。当然,您可以使用可以公开访问的任何其他方法,并从那里设置适当的属性,例如:

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