在Android开发中使用 Lombok 库

在企业 Android 应用开发中,往往需要面对大量的数据对象(POJO), 而且这些对象通常都会有比较的属性。为每个属性编写 get/set, toString 这些方法是件繁重而无趣的事情。使用 Lombok 库可以帮助我们解决这个问题。

安装 Lombok 插件

Lombok 是一种编译期代码生成技术,要想在 IDE 上能识别,需要安装对于的插件。在 Android Studio 中,安装步骤如下:

  1. 在菜单中选择 File -> Settings, 然后在弹出窗口中选择 Plugins
  2. 在弹出框的右边输入 Lombok
  3. 选择 Lombok 进行安装,如图:
    Android Studio Lombok Plugin
  4. 安装完成以后,按照提示重启 Android Studio 即可

插件只需要安装一次,以后只需要在每个项目中设置 Lombok 支持就可以了。

为项目设置 Lombok

在 Android 项目的app模块的 build.gradle 文件中,加入以下两行依赖:

1
2
compileOnly 'org.projectlombok:lombok:1.18.8'
annotationProcessor 'org.projectlombok:lombok:1.18.8'

加完以后完整的 build.gradle 文件如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
apply plugin: 'com.android.application'

android {
compileSdkVersion 29
buildToolsVersion "29.0.1"
defaultConfig {
applicationId "cn.com.hohistar.tutorial.basicwidgettutorial"
minSdkVersion 26
targetSdkVersion 29
versionCode 1
versionName "1.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}

dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'androidx.appcompat:appcompat:1.0.2'
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'androidx.test:runner:1.2.0'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
implementation 'com.jakewharton:butterknife:10.1.0'
annotationProcessor 'com.jakewharton:butterknife-compiler:10.1.0'
compileOnly 'org.projectlombok:lombok:1.18.8'
annotationProcessor 'org.projectlombok:lombok:1.18.8'
}

新加的内容在第35,36行。

为实体类加入 Lombok 的注解

假设有一个表示待办事项实体类,包含 id, title, description 和 done 四个属性,按照传统的写法,需要写53行代码,这还没包括各种构造函数,代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
public class Todo {

private int id;

private String title;

private String desc;

private Boolean done;

public int getId() {
return id;
}

public void setId(int id) {
this.id = id;
}

public String getTitle() {
return title;
}

public void setTitle(String title) {
this.title = title;
}

public String getDesc() {
return desc;
}

public void setDesc(String desc) {
this.desc = desc;
}

public Boolean getDone() {
return done;
}

public void setDone(Boolean done) {
this.done = done;
}

@Override
public String toString() {
final StringBuffer sb = new StringBuffer("Todo{");
sb.append("id=").append(id);
sb.append(", title='").append(title).append('\'');
sb.append(", desc='").append(desc).append('\'');
sb.append(", done=").append(done);
sb.append('}');
return sb.toString();
}
}

同样功能的代码,在使用 lombok 后,可以简化为这样:

1
2
3
4
5
6
7
8
9
10
11
12
@Data
public class Todo {

private int id;

private String title;

private String desc;

private Boolean done;

}

更重要的是后期维护时,增加属性,修改属性名称都会变得很简单。

本文标题:在Android开发中使用 Lombok 库

文章作者:晨星

发布时间:2019年08月13日 - 10:08

最后更新:2020年05月28日 - 16:05

原始链接:https://www.mls-tech.info/app/android/android-config-lombok/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。