概述
1.Lombok简介Project Lombok is a java library that automatically plugs into your editor and build tools, spicing up your java.Never write another getter or equals method again, with one annotation your class has a fully featured builder, Automate your logging variables, and much more.
翻译如下:Lombok是一个Java库,能自动插入编辑器并构建工具,简化Java开发。通过添加注解的方式,不需要为类编写getter或eques方法,同时可以自动化日志变量。
一句话:使用Lombok能以注解的方式简化Java代码,提高开发效率。
2.在AndroidStudio(以下简称‘AS’)中的使用
2.1 安装Lombok插件
打开AS 的 File-Pligins 输入 Lombok 进行安装,
第一次安装需要重启AS,安装完重启后就是以下画面
2.2 加入依赖①在app的build.gradle中加入以下依赖:
implementation 'org.projectlombok:lombok:1.16.18'
implementation 'org.glassfish:javax.annotation:10.0-b28'
②在app的build.gradle中 的 defaultConfig 中添加以下内容:
defaultConfig {
.....
javaCompileOptions {
annotationProcessorOptions {
includeCompileClasspath true
}
}
}
2.3 基本使用
在类上添加注解@Data
@Data组合注解
@Data = @Getter + @Setter + @ToString + @EqualsAndHashCode
@Getter + @Setter + @ToString + @EqualsAndHashCode
2.4 Lombok @Builder的使用
当一个Bean参数过多,每次赋值都需要写繁杂的set方法?
一般情况赋值
解决复杂的赋值方式: @Builder的优雅链式编程
1.通过在类上添加 @Builder+@NoArgsConstructor(无参构造)+@AllArgsConstructor(全参构造)
加入注解
2. 通过 "类名.builder"构建,记得最后需要调用build()方法结束。
@Builder使用
若编译出现以下错误:
解决方案:
在项目的根目录下创建lombok.config配置文件,内容为:lombok.anyConstructor.suppressConstructorProperties=true
添加以上配置后成功编译 运行结果:
运行结果
以上为Lombok的基本使用,注意:Lombok不支持多种参数构造器的重载
以下为Lombok的注解详细说明,可参考使用@NonNull:给方法参数增加这个注解会自动在方法内对该参数进行是否为空的校验,如果为空,则抛出NPE(NullPointerException)
@Cleanup:自动管理资源,用在局部变量之前,在当前变量范围内即将执行完毕退出之前会自动清理资源,自动生成try-finally这样的代码来关闭流
@Getter/@Setter:用在属性上,再也不用自己手写setter和getter方法了,还可以指定访问范围
@ToString:用在类上,可以自动覆写toString方法,当然还可以加其他参数,例如@ToString(exclude=”id”)排除id属性,或者@ToString(callSuper=true, includeFieldNames=true)调用父类的toString方法,包含所有属性
@EqualsAndHashCode:用在类上,自动生成equals方法和hashCode方法
@NoArgsConstructor, @RequiredArgsConstructor and @AllArgsConstructor:用在类上,自动生成无参构造和使用所有参数的构造函数以及把所有@NonNull属性作为参数的构造函数,如果指定staticName = “of”参数,同时还会生成一个返回类对象的静态工厂方法,比使用构造函数方便很多
@Data:注解在类上,相当于同时使用了@ToString、@EqualsAndHashCode、@Getter、@Setter和@RequiredArgsConstrutor这些注解,对于POJO类十分有用
@Value:用在类上,是@Data的不可变形式,相当于为属性添加final声明,只提供getter方法,而不提供setter方法
@Builder:用在类、构造器、方法上,为你提供复杂的builder APIs,让你可以像如下方式一样调用Person.builder().name("Adam Savage").city("San Francisco").job("Mythbusters").job("Unchained Reaction").build();
@SneakyThrows:自动抛受检异常,而无需显式在方法上使用throws语句
@Synchronized:用在方法上,将方法声明为同步的,并自动加锁,而锁对象是一个私有的属性$lock或$LOCK,而java中的synchronized关键字锁对象是this,锁在this或者自己的类对象上存在副作用,就是你不能阻止非受控代码去锁this或者类对象,这可能会导致竞争条件或者其它线程错误
@Getter(lazy=true):可以替代经典的Double Check Lock样板代码
@Log:根据不同的注解生成不同类型的log对象,但是实例名称都是log,有六种可选实现类, 推荐使用 @Slf4j
......
3.总结
这篇文章主要讲解了在Android中Lombok的入门与使用。介绍了一些常用的lombok注解,大大简化了我们的开发工作和代码的简洁性。当然,lombok不支持多种参数构造器的重载,看个人选择使用。最后,我个人还是很推荐这款插件的,毕竟代码还是推崇简洁优雅,可读性高为主。
Lombok :
最后
以上就是灵巧萝莉为你收集整理的android使用lombok_Android 使用Lombok插件的入门基本姿势,为简化而生的全部内容,希望文章能够帮你解决android使用lombok_Android 使用Lombok插件的入门基本姿势,为简化而生所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复