kotlin中拓展方法反编译java代码结果

内容分享3天前发布
0 0 0
  1. 简单代码


package kotlinTest.extensionmethod

class ExtensionMethodTest {

}

fun String.abc() {
    println("abc")
}

fun main() {
    "a".abc()
}

  1. 用as 反编译成java 代码之后的结果

// ExtensionMethodTest.java
package kotlinTest.extensionmethod;

import kotlin.Metadata;

@Metadata(
   mv = {1, 6, 0},
   k = 1,
   xi = 2,
   d1 = {"u0000f
u0002u0018u0002
u0002u0010u0000
u0002u0002u0018u00002u00020u0001Bu0005¢u0006u0002u0010u0002¨u0006u0003"},
   d2 = {"LkotlinTest/extensionmethod/ExtensionMethodTest;", "", "()V", "com.free.learn.main"}
)
public final class ExtensionMethodTest {
}
// ExtensionMethodTestKt.java
package kotlinTest.extensionmethod;

import kotlin.Metadata;
import kotlin.jvm.internal.Intrinsics;
import org.jetbrains.annotations.NotNull;

@Metadata(
   mv = {1, 6, 0},
   k = 2,
   xi = 2,
   d1 = {"u0000u000e
u0000
u0002u0010u0002
u0000
u0002u0010u000e
u0000u001au0006u0010u0000u001au00020u0001u001a
u0010u0002u001au00020u0001*u00020u0003¨u0006u0004"},
   d2 = {"main", "", "abc", "", "com.free.learn.main"}
)
public final class ExtensionMethodTestKt {
   public static final void abc(@NotNull String $this$abc) {
      Intrinsics.checkNotNullParameter($this$abc, "$this$abc");
      String var1 = "abc";
      System.out.println(var1);
   }

   public static final void main() {
      abc("a");
   }

   // $FF: synthetic method
   public static void main(String[] var0) {
      main();
   }
}

2、分析

看这是生成了类的一个静态方法,this 当做参数传入

© 版权声明

相关文章

暂无评论

none
暂无评论...