1、为何要使用lombok?
工作中有许多重复的get和set方法,使用lombok可以消除java中 的get和set方法,利用注解自动生成
2、Lombok原理
利用JSR269规范将代码分为几个时期,分别处理,编译时候生效
3、Lombok安装
如何使用?
maven在pom中引入依赖
idea中安装lombok插件(不安装,idea就不知道,肯能回报错)
4、Lombok常用注解
使用@getter@setter注释
public class Student {
@Getter(AccessLevel.PROTECTED)
@Setter
private Integer age;
@Getter(AccessLevel.PROTECTED)
@Setter
private String name;
@Getter(AccessLevel.PROTECTED)
@Setter
private Integer id;
}
或者直接在类前面使用
@Setter
@Getter
public class Student {
private Integer age;
private String name;
private Integer id;
}
lombok会自动识别final和static变量,然后忽略它
如果某些变量不想被获取生成——可以在该变量上面加入注释@Getter(AccessLevel.NONE),就不会生成对应的方法
使用@ToString
在类名前面使用,自动生成所有变量的字符串
public String toString() {
return "Student(age=" + this.getAge() + ", name=" + this.name + ", id=" + this.getId() + ")";
}
如果不想输出某些字段,可以使用exclude属性筛选字段。@ToString(exclude = (“age”))
反之如果必须有某些字段,使用@ToString(of= (“age”))
使用@EqualsAndHashCode
生成了3个方法
使用@NonNull
在定义一个形参时候,不需要为空,自己写还需要写一串判断,使用@NonNull就可以直接让系统判断
public void test(@NonNull Integer age){
会自动生成
if (age == null) {
throw new NullPointerException(“age is marked non-null but is null”);
}
使用@NoArgsConstructor和@AllArgsConstructor
生成有参和无参的构造函数
@RequiredArgsConstructor
这个针对final之类的参数的构造函数
@Data注解——全能之神
集成了
@getter、@setter
@ToString
@EqualsAndHashCode
@RequiredArgsConstructor
注解
使用@Builder
会生成一个内部类,内部类里面讲每个参数变为一个方法,可以使用builder()调用
egg: Student student=builder().age(14).name(“jack”).build();
使用@log
egg:log.info(“age”);
六月 30, 2021 8:38:28 下午 com.demo.domain.Student test
信息: age
直接使用log就可以调用日志信息
使用val,注意不是注释,是数据类型
类似js的var,定义一个属相时候就不用说明类型
val map = new HashMap<String,String>();
等同
Map<String,String> map = new HashMap<String,String>();
使用@Cleanup
使用这个注释,就可以在使用字符流或者文件流使用,只管使用不用关闭,注释会自动生成
@Cleanup InputStream in = new FileInputStream(“abc”);