Kotlin 数据对象变为 null

问题描述 投票:0回答:1

我是 Kotlin 中的密封类和 4 个数据对象。我想使用数据对象来填充底部选项卡。然而,其中一个数据对象返回 null。

我有这门课:

sealed class TabanSevkHedefiMuta(
    val ibre: Int,
    val hedef: String,
    val nisaneSerbest: ImageVector,
    val yafta: String
) {
    data object Sinif : TabanSevkHedefiMuta(
        ibre = 1,
        hedef = "sinif",
        nisaneSerbest = Icons.Filled.School,
        yafta = "Sınıf"
    )

    data object Talebe : TabanSevkHedefiMuta(
        ibre = 2,
        hedef = "talebe",
        nisaneSerbest = Icons.Filled.Person,
        yafta = "Talebe"
    )

    data object Vazife : TabanSevkHedefiMuta(
        ibre = 3,
        hedef = "vazife",
        nisaneSerbest = Icons.Filled.Book,
        yafta = "Vazife"
    )

    data object Tavir : TabanSevkHedefiMuta(
        ibre = 4,
        hedef = "tavir",
        nisaneSerbest = Icons.Filled.Handshake,
        yafta = "Tavır"
    )

    companion object {
        val hedefler = listOfNotNull(Sinif, Talebe, Vazife, Tavir)
    }

}

当我尝试像这样迭代 hedefler 时:

TabanSevkHedefiMuta.hedefler.forEach { tabanSevkHedefiMuta ->
    Ikazci.izahEt(izahat = "tabanSevkHedefiMuta: ${tabanSevkHedefiMuta.yafta}")
}

仅打印 3 个元素来记录,如下所示:

tabanSevkHedefiMuta: Talebe
tabanSevkHedefiMuta: Vazife
tabanSevkHedefiMuta: Tavır

怎么会发生这种事?我的意思是Sinif怎么会变成空? 感谢您的帮助。

android kotlin nullpointerexception
1个回答
0
投票

使用 by lazy 是缓解这个错误的方法,像这样:

companion object {
    val hedefler: List<TabanSevkHedefiMuta> by lazy {
        listOfNotNull(Sinif, Talebe, Vazife, Tavir)
    }
}

但是如果可能的话,我想知道为什么会发生这种情况。

资源

© www.soinside.com 2019 - 2024. All rights reserved.