我是 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/

10-13 07:20