将 kotlin Lazy 与内部 class 一起使用时出现 NoClassDefFoundError
NoClassDefFoundError when use kotlin Lazy with inner class
只需考虑以下代码:
fun doAction(data: Any?, action: (Any?) -> Unit) {
action(data)
}
class Outer {
val a = "a"
val b = "b"
val inner by lazy { Inner() }
inner class Inner {
init {
doAction(a) { println(it) }
doAction(b) { println(it) }
}
}
}
fun main() {
Outer().inner
}
我希望得到结果,打印“a”和“b”,但只打印“a”和一个错误:
Exception in thread "main" java.lang.NoClassDefFoundError: org/example/Outer$Inner (wrong name: org/example/Outer$inner)
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:763)
科特林版本:1.3.72
变量声明问题
当我将 val inner
更改为 val temp
时,不会出现错误
只需考虑以下代码:
fun doAction(data: Any?, action: (Any?) -> Unit) {
action(data)
}
class Outer {
val a = "a"
val b = "b"
val inner by lazy { Inner() }
inner class Inner {
init {
doAction(a) { println(it) }
doAction(b) { println(it) }
}
}
}
fun main() {
Outer().inner
}
我希望得到结果,打印“a”和“b”,但只打印“a”和一个错误:
Exception in thread "main" java.lang.NoClassDefFoundError: org/example/Outer$Inner (wrong name: org/example/Outer$inner)
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:763)
科特林版本:1.3.72
变量声明问题
当我将 val inner
更改为 val temp
时,不会出现错误