哪种解决方案更好?使用可为空的 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 视为默认值?