Android中消除Java冗长代码神器——Lombok

简介

Android中经常需要建一些数据的实体类,然后实现它们的getter和setter的方法,虽然有JsonFormat的插件可以一键生成对应的getter和setter的方法,但是如果一个实体类有几十个变量的话,生成大量的代码,使这个实体类不够简洁。而Lombok正是一个可以消除Java冗长代码,使代码更精简和优雅的注解工具。它可以在编译期自动生成getter/setter/toString/equals/hashCode/constructor等方法,而在实体类中隐藏掉(不写)这些方法(代码中还可以引用),从而减少代码量,使代码更精简。

Lombok官网地址:https://projectlombok.org/ 它可以用于Java开发,也可以用于Android开发,用法基本相同,下面主要讲在Android Studio平台下的使用。

安装插件和开启Annotation process

在Android Studio下,进入setting/Plugins/Browse repositories,搜索Lombok,如下图,然后点击安装,重启Android Studio


接着,要使代码主要添加了Lombok的相关注解就编译生成对应的方法,就要开启Annotation process。进入File/Other Settings/Defalut Settings中,如下图,在Complier/Annotatioin Processors中勾选上Enable annotation processing即可

添加依赖

Lombok官网的Android使用说明中,要求android plugin版本要不小于0.4.3,然后添加以下依赖即可:

provided "org.projectlombok:lombok:1.12.6"

使用provided而不是compile,是编译时使用,但不打包到apk中,更多的使用方法,参考:gradle中compile,provided,compile files,compile project有何区别?

用法

1.@Getter @Setter

直接在变量定义前加相应的方法

class Person{
    @Getter @Setter private String name;
    @Setter(AccessLevel.PROTECTED) private int age;
}

对应的完整写法就是

class Person{
    private String name;
    private int age;

    public String getName(){
        return name;
    }

    public void setName(String name){
        this.name=name;
    }

    public void setAge(String age){
        this.age=age;
    }
}

2.@NonNull

@Getter @Setter @NonNull
private Model model;

等价于

@NonNull
private Model model;

@NonNull
public Model getModel(){
    return model;
}

public void setModel(@NonNull Model model){
    if(model==null){
        throw new NullPointerException("model");
    } else {
        this.model = model;
    }
}

3.@Data

相当于同时使用@ToString, @EqualsAndHashCode, @Getter和@Setter

具体代码略

其他注解参考官网:https://projectlombok.org/features/index.html

Java界的神器-使用Lombok来消除你的冗余代码量,这篇文章写得比较完整,就不重复写了

补充(2016.08.23):
JakeWharton大神并不建议使用Anyone Using Project Lombok?

Using Lombok.png

---EOF---

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,136评论 25 708
  • 本文章涉及代码已放到github上annotation-study 1.Annotation为何而来 What:A...
    zlcook阅读 29,277评论 15 116
  • 最近两个月一直过着吃土的日子,《大鱼海棠》忍了没看等网播,这部萌片上了就舍弃了《盗墓笔记》果断选择它了。 有人说这...
    三米GZ阅读 710评论 0 0
  • 《圆梦》 时至今日, 两大幸事: 父母予命; 娶你为妻。 我妻袁梦, 圆我之梦, 金玉其外, 玉金其中。 当然当然...
    山林风火阅读 301评论 0 0
  • 佛昙简介: 佛昙是历史悠久的古镇。因芙蓉山下从前有一口清潭,映现山顶一块状如佛头的天然岩石,称佛潭,以至成为...
    5bfd687371b8阅读 1,233评论 0 0