Android开发

kotlin的synthetic实现原理解析

2019-12-18  本文已影响0人  饮料只喝芬达

kotlin的synthetic实现方式是编译期修改synthetic相关代码,

   private HashMap _$_findViewCache;
   public View _$_findCachedViewById(int var1) {
      if (this._$_findViewCache == null) {
         this._$_findViewCache = new HashMap();
      }

      View var2 = (View)this._$_findViewCache.get(var1);
      if (var2 == null) {
         var2 = this.findViewById(var1);
         this._$_findViewCache.put(var1, var2);
      }

      return var2;
   }

   public void _$_clearFindViewByIdCache() {
      if (this._$_findViewCache != null) {
         this._$_findViewCache.clear();
      }

   }

实际上使用的还是findViewById来寻找布局,只不过相关代码,kotlin帮我们自动生成了,
相比于butterknife的自动生成一个相关类xxx_ViewBinding而言这种直接在当前文件引入一个kotlinx.android.synthetic.main来实现的方法显得更酷一点。
那么为什么kotlinx能做到这么酷呢,得益于kotlin-jvm,以往我们只能利用Apt在编译前通过注解去自动帮我们生成一些java代码,而kotlin则可以直接将kt文件编译成class文件,并在这个过程中实现java类源码的更改,这个过程更酷。

上一篇下一篇

猜你喜欢

热点阅读