gpt4 book ai didi

kotlin - 在伴随对象中初始化映射会抛出 ExceptionInInitializerError

转载 作者:行者123 更新时间:2023-12-04 02:29:41 24 4
gpt4 key购买 nike

考虑以下类:

sealed class Fruit(val id: String, val label: String) {
object orange : Fruit("Citrus sinensis", "orange")
object watermelon : Fruit("Citrullus lanatus", "watermelon")

companion object {
val values = listOf(orange, watermelon)
val valuesByID = values.associateBy { it.id } // <<< error here
}
}

这个类可以正常编译,但是在运行时引用它时(例如:val oj = Fruit.orange)会抛出错误。

java.lang.ExceptionInInitializerError
at com.example.sandbox.App.<clinit>(App.kt:13)
at java.lang.reflect.Constructor.newInstance(Native Method)
at java.lang.Class.newInstance(Class.java:1606)

但是,如果删除了 valuesByID 行,则不会抛出错误。为什么会这样?

如果重要的话,运行时环境是 Android。

最佳答案

这是一个已知问题 https://youtrack.jetbrains.com/issue/KT-25738 2018 年 7 月报道。

一般问题是在其同伴中使用作为密封类子类的对象

关于kotlin - 在伴随对象中初始化映射会抛出 ExceptionInInitializerError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65068266/

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