簡體   English   中英

為什么kotlin lambda反編譯為java代碼是(Function0)null.INSTANCE

[英]why kotlin lambda decompiled to java code is (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;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM