在Android中使用Lombok减少编码

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 = true
lombok.addGeneratedAnnotation = false

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

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

@Data
public 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<Person>();
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
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值