小编Paw*_*ski的帖子

null或空lambda作为默认值

哪种解决方案更好?使用nullable lambda或传递空lambda作为默认参数?kotlin会以某种方式优化空的lambda吗?或者创建什么都不做的新实例?

class Test1(val action: () -> Unit = {})

不幸的是我不明白生成的字节码.让我们分析一下

val test11 = Test1()

反编译后给我们

private static final Test1 test11 = new Test1((Function0)null, 1, (DefaultConstructorMarker)null);

最后作为一个lambda传递这样的东西

var1 = (Function0)null.INSTANCE;

编辑:隐藏的问题是:Kotlin如何将空lambda视为默认值?

lambda decompiling kotlin jvm-bytecode

10
推荐指数
2
解决办法
8401
查看次数

标签 统计

decompiling ×1

jvm-bytecode ×1

kotlin ×1

lambda ×1