gpt4 book ai didi

android - 如何在不初始化的情况下在 Kotlin 中创建变量?

转载 作者:行者123 更新时间:2023-12-02 13:22:26 25 4
gpt4 key购买 nike

这是一个简单的问题。在 Java 中,您可以创建 String 变量或几个变量,而无需为其添加任何值。这在 Activity 中调用 onCreate() 之前在类开始时使用。我用过lateinit Kotlin 中的属性来实现这一点,但现在我在改变 RecyclerView 的可见性时遇到了问题。它会抛出异常 "lateinit property recyclerView has not been initialized" .

有什么方法可以知道属性是否已初始化?这在 Fragment 中的父 Activity 开始时调用(隐藏 recyclerView 并显示 ProgressBar,直到数据绑定(bind)到 recyclerView)。

最佳答案

In Java you can create String variable or couple of variables without adding any value to it



实际上在这种情况下,它被隐式声明为 null . Kotlin 不这样做,因为它的可空性机制。您必须显式声明一个可以为空的变量以允许为空:
var str: String // does not work
var str: String? // does not work
var str: String? = null // works

另见 this answer .

您的另一个选择确实是标记它 lateinit :
lateinit var str: String // works

如果您需要在使用前检查它是否已初始化,请使用
if (::str.isInitialized)

但实际上您应该避免此检查,并确保在使用之前对其进行初始化。

关于android - 如何在不初始化的情况下在 Kotlin 中创建变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52964417/

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