美文网首页
kotlin扩展函数

kotlin扩展函数

作者: MIRROR1217 | 来源:发表于2021-07-08 22:27 被阅读0次

    kotlin扩展函数非常方便好用,可以完美的代替各种Utils:StringUtils、FileUtils、DateUtils等。我们分析其内部原理。

    比如我们下个简单的例子:

    fun String.print() {
        print(this)
    }
    

    我们这里设置一个String的扩展函数,打印它的内容,我们看下反编译之后的代码:

    @Metadata(
       mv = {1, 1, 16},
       bv = {1, 0, 3},
       k = 2,
       d1 = {"\u0000\f\n\u0000\n\u0002\u0010\u0002\n\u0002\u0010\u000e\n\u0000\u001a\n\u0010\u0000\u001a\u00020\u0001*\u00020\u0002¨\u0006\u0003"},
       d2 = {"print", "", "", "space1"}
    )
    public final class Test2Kt {
       public static final void print(@NotNull String $this$print) {
          Intrinsics.checkParameterIsNotNull($this$print, "$this$print");
          boolean var1 = false;
          System.out.print($this$print);
       }
    }
    // Test2.java
    import kotlin.Metadata;
    
    @Metadata(
       mv = {1, 1, 16},
       bv = {1, 0, 3},
       k = 1,
       d1 = {"\u0000\f\n\u0002\u0018\u0002\n\u0002\u0010\u0000\n\u0002\b\u0002\u0018\u00002\u00020\u0001B\u0005¢\u0006\u0002\u0010\u0002¨\u0006\u0003"},
       d2 = {"LTest2;", "", "()V", "space1"}
    )
    public final class Test2 {
    }
    

    看其源码可知,它生成了一个静态方法,然后再进行逻辑处理。

    相关文章

      网友评论

          本文标题:kotlin扩展函数

          本文链接:https://www.haomeiwen.com/subject/gkxxpltx.html