gpt4 book ai didi

kotlin - 来自类型参数的属性的自定义 getter

转载 作者:IT老高 更新时间:2023-10-28 13:44:10 24 4
gpt4 key购买 nike

我有一个有点像这样的 Java 文件:

public class Thing {

private String property;

public Thing(String property) {
this.property = property;
}

public String getProperty() {
if (property == null) {
return "blah blah blah";
} else {
return property;
}
}

}

显然我的实际类(class)还有更多内容,但以上只是一个示例。

我想用 Kotlin 写这个,所以我从这个开始:

class Thing(val property: String?)

然后我尝试使用 the official documentation 实现自定义 getter和 another Kotlin question作为引用,像这样:

class Thing(property: String?) {

val property: String? = property
get() = property ?: "blah blah blah"

}

但是,我的 IDE (Android Studio) 以红色突出显示上述代码第 3 行的第二个 property 并给我消息:

Initializer is not allowed here because the property has no backing field

为什么会出现这个错误,我该如何编写上述自定义 getter?

最佳答案

您需要在 get() 的正文中使用“字段”而不是“属性”来声明 backing field :

class Thing(property: String?) {
val property: String? = property
get() = field ?: "blah blah blah"
}

但是,在这个特定的示例中,您最好使用非空属性声明:

class Thing(property: String?) {
val property: String = property ?: "blah blah blah"
}

关于kotlin - 来自类型参数的属性的自定义 getter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39396214/

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