之前一直在用ButterKnife也觉得挺好用的,只是最近在做项目模块化的时候发现在子模块之中的id并非为常量导致子模块所有注解报错,虽然找到一些解决的办法不过都比较麻烦,而且我觉得也有些曲线救国的感觉。于是我开始用起了最传统的方法findViewById 结果就出现了 界面之中 一大堆的 View 定义 以及 一大堆的findViewById 的调用,这让稍微有点强迫症的我并受不了。
例如这样:
TextView textView;
ImageView ImageView;
ImageView ImageView;
ImageView ImageView;
void init(View view) {
textView = view.findViewById();
ImageView = view.findViewById();
ImageView = view.findViewById();
}
甚至更多 这样我十分郁闷。后来我想到在用Lombok 的时候 发现 这个插件可以骗过编译器让编译器认为该类已经有了get和set方法那为什么不能让我们的编译器认为已经有了这些变量呢?这样就利用Lombok的源码写了这款插件!虽然过程曲折不过最终还是弄出来了,目前用在我的项目中感觉还挺好!
来看看怎么用吧!
比如这是你之前的代码:
![原代码](https://i-blog.csdnimg.cn/blog_migrate/e6282eab3b25819c10391898f170a862.jpeg)
这是用了这个插件之后的代码:
是不是 text的定义没有了 而packageName是你的资源目录包名 value 是你layout的名称
你可以到https://github.com/ivarxiong/jaina_plugin/releases下去下载你AS对应的插件至于插件安装自行百度
然后再在gradle 中加入这些就可以了
repositories { maven { url 'https://dl.bintray.com/ivarxiong/maven/' } }
compile 'com.github.jaina:jaina_api:1.0.2' apt 'com.github.jaina:jaina_compiler:1.0.1'
原理也就是插件在编写代码是让ide 觉得有这些变量,而实际这些变量的产生是在编译的过程中!
插件的应用就是这样了,感觉还是挺方便的。kotlin 请忽略,因为这个做法就是来源于kotlin,用过kotlin的你懂的!
欢迎大家一起交流,以及建议,有问题可以发我邮箱450105071@qq.com 求大家在githup上给个星呗
最后,为了联盟!