Lombok的介绍,可以看官网的一段视频 https://projectlombok.org/。

说得简单一点,该框架可以用来精简java代码,提升开发效率,利用注解在编译期生成getter/setter/toString()/hash/equals/construct等等方法。在web中用得比较多,但是在android上估计用得少之又少。个人认为在没有很好的评估该框架的兼容性前,在实际生成项目中最好不要使用。当然,在自己用来写demo的时候倒可以用来一试,怎一个爽字了得。

关于该框架,官方的android的接入文档地址在:https://projectlombok.org/setup/android.html,当然stackoverflow上也有接入相关的信息:http://stackoverflow.com/questions/21344692/how-to-set-up-compile-library-in-android-studio-lombok,甚至还有人问有没有什么原因不要在android中使用lombok:http://stackoverflow.com/questions/34366010/are-there-reasons-not-to-use-lombok-with-android-studio?noredirect=1&lq=1,使用过程中遇到任何问题可以去github上看看有没有相应的issue:https://github.com/rzwitserloot/lombok

不管别人怎么说,总得自己试一试才知道有多爽,首先安装一个插件。具体安装方法就直接贴官方的了:

  • Go to File > Settings > Plugins
  • Click on Browse repositories…
  • Search for Lombok Plugin
  • Click on Install plugin
  • Restart Android Studio

然后在项目中以provided的形式依赖该库

provided "org.projectlombok:lombok:1.16.10"

我们先写一个java bean,就以典型的Person类来举例。

public class Person {    private String name;    private int age;    private String address;}

如果我们要生成getter和setter方法,会使用control+enter选择getter and setter方法进行自动生成,当然还有其他方法,比如toString等等,应该没有人蠢到一个一个方法去手写吧???

现在我们看看使用了Lombok框架后我们的Person类变成了什么样子,不做任何操作前,看一下类结构:

然后在项目根目录下新建一个lombok.config配置文件,加入两行配置

lombok.anyConstructor.suppressConstructorProperties = truelombok.addGeneratedAnnotation = false

两个配置的作用是禁用掉一些在android上不存在的类,这些类在标准java中才存在。

现在我们在Person类上加入注解@Data,代码如下:

@Datapublic class Person {    private String name;    private int age;    private String address;}

再看一下类结构

多了好多getter和setter方法,以及toString、equals等方法。

再加两个注解用于生成构造函数

@NoArgsConstructor@AllArgsConstructor

看下类结构是否生成了空的构造函数和全参数的构造函数

代码中使用一下,如果能编译通过并且能成功运行,则没有什么问题

        Person p = new Person();        p.setName("区长");        p.setAge(100);        p.setAddress("杭州");        Log.e("TAG", p + "");        Person p1 = new Person("区长",123,"西湖区");        Log.e("TAG", p1 + "");

运行结果

如果你接触过脚本语言,肯定知道脚本语言中支持var来声明变量,具体类型会自动推测,同样,使用了Lombok后也是支持的,我们可以在代码中直接使用关键字val,至于为什么不是var,大概是Lombok认为在java中,后面可能会使用var关键字。具体例子如下,声明一个list泛型,存入之前的两个person对象,并打印输出:

val list=new ArrayList();list.add(p);list.add(p1);Log.e("TAG", list + "");

效果如下:

作为一个程序员,你一定写过很多判空的代码,Lombok中有一个@NonNull注解,注意不是android support包下的注解,可以生成一段判空的代码,如果值为空,会抛出空指针异常。如下:

    public boolean isEmpty(@NonNull String value) {        return true;    }

反编译后可以看到生成的代码如下:

public boolean isEmpty(@NonNull String value) {        if(value == null) {            throw new NullPointerException("value");        } else {            return true;        }    }

Lombok中的注解不止上面介绍的几个,其他注解自己去挖掘吧,可以看到,使用了Lombok后可以给我们带来一定的方便,还是可以一试的~~

更多相关文章

  1. Android支持多并发的异步任务框架MultiAsynctask
  2. android 登录Javaeye(使用HttpURLConnection和HttpClient)
  3. Android沉浸式(侵入式)标题栏(状态栏)Status(二)
  4. Android(安卓)-- service两种启动方式startService与bindService
  5. 基于frida框架Hook native中的函数(1)
  6. Eclipse启动失败Android(安卓)sdk content loader 0%的四种解决
  7. Android(安卓)studio build.gradle 各种错误解决总结
  8. Android前端—显示GIF动画
  9. android第三方应用apk安装和运行控制解决方案

随机推荐

  1. 基于数组或链表实现Map
  2. Spring Boot + Vue3 前后端分离 实战wiki
  3. 7.1 Ansible 动态获取主机清单
  4. 「软件更新」实时数据管理平台,Apache Geo
  5. 14 个 JavaScript 代码优化技巧
  6. React UI 库:React Suite 4.0.2 版本更新-
  7. 分区出现“属性0字节”情况下的文件找回
  8. 老司机“四招”带你玩转运维
  9. 常用的Linux命令合集,建议收藏保存!
  10. Logstash 之 安装