为什么kotlin lambda反编译为java代码是(Function0)null.INSTANCE
当我在一个类中声明一个属性如下:
class xx{ var b:()->Boolean={false} }
然后反编译如下:
...... public xxx() { this.b = (Function0)null.INSTANCE; } ......
(Function0)null.INSTANCE代表什么? 我认为这将是 :
this.b= new Function0() { public final Object invoke() { return false; } };
但它不,为什么?
谢谢!
反编译器没有显示正确的结果:例如,当用JD-GUI进行时,你会得到:
final class xx$b$1 extends Lambda implements kotlin.jvm.functions.Function0<Boolean> { public final boolean invoke() { return false; } public static final 1 INSTANCE = new 1(); xx$b$1() { super(0); } } public final class xx { // ... getter and setter private Function0<Boolean> b = (Function0)xx.b.1.INSTANCE; }