Lombok

Lombok

一种 Java 实用工具,可以帮助开发人员消除 Java 冗长的代码,尤其是针对简单的 Java 对象(pojo) ;它通过注解实现这一目的。

maven:

<dependency>
 	<groupId>org.projectlombok</groupId>
	<artifactId>lombok</artifactId>
</dependency>

1、标签

注解用法备注
@Getter
@Setter
@Getter(AccessLevel.PROTECTED) // 设置访问级别,默认public
@Setter(AccessLevel.NONE) // 设置Setter访问级别为NONE表示不可Setter
* 可加在类或者单独的属性上,@Getter()还可以设置访问级别
* 只对成员变量产生效果,不对类级的static产生效果,final类型的只会产生Getter方法
* 对于不想被访问的数据可以单独设置访问级别为 AccessLevel.NONE 就不会生成对应的Getter / Setter方法
@ToString @ToString(exclude={"属性1", "属性2"}) // 排除不添加到ToString的属性
@ToString(of={"属性1", "属性2"}) // 选择添加到ToString的属性
@ToString(callSupper=true) // 调用父类ToString [ 在本类ToString之前追加父类的,并非只调父类 ]
* 只能加在类上
* exclude / of 属性值只有一个时可以省略大括号
@EqualsAndHashCode @EqualsAndHashCode(exclude={"属性1", "属性2"}, of={"属性4", ”属性5“}) // 设置排除或者包含的判断条件 * 只能用在类上
* 生成 equals(Object):boolean / canEquak(Object):boolean / hashCode():int 方法
* equalsObject):boolean 会调用 canEquak(Object):boolean 进行判断,但是其自身就包含canEquak(Object):boolean的方法,所以实际上 canEquak(Object):boolean 代码是冗余的,但是可以单独调用(内部只有一个 return o instanceof 当前类)
* hashCode():int 方法只会计算包含的属性的hashCode
@NonNull public void show(@NonNull String 属性名) {...} // 编译后会在方法内先判断属性是否为null
@NonNull private int 属性名; // 属性在使用的时候不能为null"
* 可以加在方法上(判断当前属性是否为null) 、 字段上(在使用的时候不能为null) 、类上
@NoArgsConstructor
@RequiredArgsConstructor
@AllArgsConstructor
@NoArgsConstructor // 生成无参构造

@RequiredArgsConstructor // 生成带参构造【包含@NonNull修饰的字段和final修饰的未赋值字段】

@AllArgsConstructor // 生成所有参数的构造器
* 只能用在类上
* final 修饰的属性只能赋值一次,如果有无参构造则必须声明时赋值,没有无参可不赋值,不赋值时 @RequiredArgsConstructor 会对其产生赋值操作,否则@RequiredArgsConstructor 不会搭理final修饰的属性
* +:@RequiredArgsConstructor (staticName="函数名") // 会把构造器设为private并生成一个设定的函数返回当前构造器构造的对象
@Data 集成了 4 个注解:@Getter/@Setter、@ToString、@EqualsAndHashCode、@RequiredArgsConstructor
@Builder eq:在User类上注解@Builder

实例化的时候可以通过建造者模式进行链式编程(函数编程)添加属性值 [ 流式编程 ]
User user = User.builder().属性1(值).属性2.(值).build();
* 只能用在类上
* 为类生成复杂的构造器API
@Log 为类生成一个 Logger 对象 log,在内部即可使用
eq:类方法内调用log打印日志:log.info("内容")
* 作用于类上
val import lombok.val;
val map = new HashMap(); // 在编译阶段才会确定 map 的类型,简化代码
* Lombok 新增的关键字类型,类似 js 的 var
@Cleanup @Cleanup
InputStream is = new FileInputStream("path");
* 作用于I/O流对象,实现自动关闭对象进行清理的作用,节省了大篇幅重复枯燥的冗余close代码
@Value 将字段变成不可变类型(使用final修饰)
同时包含@ToString、@EqualsAndHashCode、@AllArgsConstructor、@Getter
* 作用于类上
@SneakyThrows @SneakyThrows
public void xxFunc(){...}

@SneakyThrows(InterruptedException.class)
public void xxFunc(){...}
* 作用于方法上
* 使用try catch来捕获Throwable异常,也可以设置要捕获的异常类型
@Synchronized @Synchronized
public void xxFunc(){...}

@Synchronized("readLock")
public void xxFunc(){...}
* 给方法加同步锁

2、流程

在这里插入图片描述

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

纯纯的小白

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值