我是 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怎么会变成空? 感谢您的帮助。
使用 by lazy 是缓解这个错误的方法,像这样:
companion object {
val hedefler: List<TabanSevkHedefiMuta> by lazy {
listOfNotNull(Sinif, Talebe, Vazife, Tavir)
}
}
但是如果可能的话,我想知道为什么会发生这种情况。