我有一个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;
}
}
}
Run Code Online (Sandbox Code Playgroud)
显然我的实际课程还有更多,但上面只是一个例子.
我想在Kotlin写这个,所以我从这开始:
class Thing(val property: String?)
Run Code Online (Sandbox Code Playgroud)
然后我尝试使用官方文档和另一个Kotlin问题作为参考来实现自定义getter ,如下所示:
class Thing(property: String?) {
val property: String? = property
get() = property ?: "blah blah blah"
}
Run Code Online (Sandbox Code Playgroud)
但是,我的IDE(Android Studio)property以红色突出显示上面代码第3行的第二行,并给出了以下消息:
此处不允许使用初始化程序,因为该属性没有后备字段
为什么我会收到此错误,如何能够如上所述编写此自定义getter?
mfu*_*n26 11
您需要在您的正文中使用"field"而不是"property" get()才能声明一个支持字段:
class Thing(property: String?) {
val property: String? = property
get() = field ?: "blah blah blah"
}
Run Code Online (Sandbox Code Playgroud)
但是,在此特定示例中,使用非null属性声明可能会更好:
class Thing(property: String?) {
val property: String = property ?: "blah blah blah"
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3071 次 |
| 最近记录: |