gpt4 book ai didi

java - 为什么 kotlin lambda 反编译为 java 代码是 (Function0)null.INSTANCE

转载 作者:搜寻专家 更新时间:2023-11-01 03:17:22 28 4
gpt4 key购买 nike

当我如下声明类中的属性时:

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;
}

关于java - 为什么 kotlin lambda 反编译为 java 代码是 (Function0)null.INSTANCE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44877344/

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