当我在一个类中声明一个属性时,如下所示:

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/

10-09 20:01