gpt4 book ai didi

kotlin - 我们需要在 kotlin 中初始化可为空的字段吗?

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

最近复习了一些kotlin代码,所有可以为空的字段都初始化为null。

val x : String 有什么区别? = nullval x : String?

我们应该将可空字段初始化为空吗?

最佳答案

一切,甚至是可为空的变量和原语,都需要在 Kotlin 中进行初始化。正如 tynn 所提到的,如果您需要覆盖,您可以将它们标记为抽象。但是,如果您有接口(interface),则不必初始化它们。这不会编译:

class Whatever {
private var x: String?
}

但这会:

interface IWhatever {
protected var x: String?
}

这也是:

abstract class Whatever {
protected abstract var x: String?
}

如果在方法中声明,则不必直接初始化,只要在被访问之前就已初始化即可。如果您熟悉它,这与 Java 中的完全相同。

如果不在构造函数中初始化,则需要使用lateinit。或者,如果你有一个 val,你可以覆盖 get:

val something: String?
get() = "Some fallback. This doesn't need initialization because the getter is overridden, but if you use a different field here, you naturally need to initialize that"

正如我打开的那样,即使是可为空的变量也需要初始化。这就是 Kotlin 的设计方式,没有办法绕过它。所以是的,如果你不立即用其他东西初始化它,你需要将 String 显式初始化为 null。

关于kotlin - 我们需要在 kotlin 中初始化可为空的字段吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53333293/

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