Lombok常用功能说明

216 阅读2分钟

前言

使用lombok需要在pom里添加依赖和在idea里添加lombok插件

日志打印(7种)需要配合日志框架使用

@Slf4j @XSlf4j @Log @Log4j @Log4j2 @CommonsLog @JBossLog

@Getter和@Setter

添加getter和setter方法

@EqualsAndHashCode(of = {"name","age"})

重写equals方法和hashcode方法,of后指定只有哪些字段参与equals方法和hashcode方法

@ToString(of = {"name","age"})

重写ToString方法,of后指定只有哪些字段参与ToString

@NoArgsConstructor(access = AccessLevel.PRIVATE)

无参构造函数,access设置构造函数为public或private,单例模式可以用

@AllArgsConstructor

全参构造函数

@RequiredArgsConstructor

用于类上,会给前面标有final和@NonNull的字段创建构造函数,final字段要求没有初始值,并且不能有无参构造函数

@Data

包含@Getter、@Setter、@ToString、@EqualsAndHashCode、@RequiredArgsConstructor

@Value(staticConstructor = "newInstance")

使所有的成员变量都是final的,是以下注解的集合:@ToString、@EqualsAndHashCode、@Getter、@RequiredArgsConstructor
staticConstructor使生成的构造方法私有化,并且生成一个返回对象为当前类的无参静态方法,方法名为staticConstructor值
@Value的成员变量都是final的,没有setter方法,适合加在值不希望被改变的类上,适合用在POJO或DTO上

@Accessors(chain = true, fluent = true)

chain链式调用getter和setter
fluent可以让对象直接用字段来赋值(有参数)或取值(无参数),类似jQuery
student.age(10);
student.age();

@Builder和@Singular("add")

@Builder构造者模式,@Singular("add")加在字段上,如List字段,用自定义add方法添加值
Student stu = Student.builder().name("name").age(10).add("read").add("dance").build();

@SneakyThrows

异常处理try catch

@Synchronized

添加同步锁

@Cleanup

自动关闭资源
@Cleanup FileInputStream inStream = new FileInputStream(in);

val和var

自动判断变量类型
val list = new ArrayList<String>();
var name = "hello";

@FieldNameConstants

加在类上,通过Student.Fields.nameStudent.Fields.age来返回字段名name或age
可用于mybatis更新字段

@NonNull

加在方法参数列表前,判断参数不为空
加在类字段前,表示该字段不能设置为空