kotlin的synthetic实现原理解析

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类源码的更改,这个过程更酷。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容