lombok 注解详情

2024-01-03 11:42:37

依赖

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

Lombok?的优缺点

优点:

1.能通过注解的形式自动生成构造器、getter / setter、equals、hashcode、toString 等方法,提高了一定的开发效率

2.让代码变得简洁,不用过多的去关注相应的方法

3.属性做修改时,也简化了维护为这些属性所生成的 getter / setter 方法等

缺点:

1.不支持多种参数构造器的重载

2.虽然省去了手动创建一系列方法的麻烦,但大大降低了源代码的可读性和完整性,降低了阅读源代码的舒适度

基本注解的使用(注解属性非必选)

@AllArgsConstructor:作用于类,生成参数为所有实例变量的构造函数

@Builder:作用于类,将其变成建造者模式

@Cleanup:作用于变量,自动关闭资源,针对实现了 java.io.Closeable 接口的对象有效

@CustomLog:自定义日志类,生成 log 对象

@Data:作用于类,是以下注解的集合:@ToString @EqualsAndHashCode @Getter @Setter

@RequiredArgsConstructor

@EqualsAndHashCode:作用于类,覆盖默认的 equals 和 hashCode1

@Generated:用于标记类、变量、方法是自动生成的,没什么大用

@Getter:作用于类,生成该类所有的实例变量的 getter 方法。作用于变量,生成变量的 getter 方法

@NoArgsConstructor:作用于类,生成无参构造方法

@NonNull:作用于成员变量和参数中,标识不能为空,否则抛出空指针异常

@RequiredArgsConstructor:作用于类,生成包含 final 和 @NonNull 注解的成员变量的构造方法

@Setter:作用于类,生成该类所有的实例变量的 setter 方法。作用于变量,生成该变量的 setter 方法

@Singular:作用于集合字段,需要配合 @Builder 使用2

@SneakyThrows:作用于方法,对异常进行捕捉并抛出

@Synchronized:作用于方法,可以替换 synchronized 关键字或 lock 锁

@ToString:作用于类,覆盖默认的 toString() 方法

@val:作用于类、变量,主要用于声明变量的类型,注解将从初始化程序表达式中推断类型,生成的变量是 final 不可以变

@Value:作用于类,是以下注解的集合:@ToString @EqualsAndHashCode @Getter

@RequiredArgsConstructor

@var:和 @val 一样,两者区别在于 var 不加 final

@With:作用于类、变量,生成 with + 变量名的方法,返回当前对象

外部注解的使用

@CommonsLog,@Log,@JBossLog,@Log4j,@Log4j2,@Slf4j,@XSlf4j:日志注解,作用于类

实验性注解的使用

@Accessors:类似于 @Builder 支持链式调用,需要配合 @Setter、@Getter 等注解使用,作用于类、变量

@Delegate:作用于容器变量,为该变量生成一堆常用的方法,这些方法都是容器中的方法

@ExtensionMethod:作用于类,向类添加方法,无需创建新的子类

@FieldDefaults:作用于类,定义变量的访问修饰符以及是否加 final

@FieldNameConstants:作用于类,生成一个包含所有成员变量的内部类或者内部枚举,内部类中每个字段值即为字段名并且值不可变

@Helper:作用于方法内部类,使内部类中的方法暴露在外面可以被直接调用,不建议使用

@NonFinal:作用于类、变量,表示变量不加 final

@PackagePrivate:作用于类和变量,相当于访问修饰符的 default,没什么用

@SuperBuilder:支持对于基类成员变量赋值,算是 @Builder 的升级版

@Tolerate:实现对冲突的兼容,作用于方法上,没什么大用,可以配合 @Builder 使用

@UtilityClass:作用于类,将类标记为 final,并且类、内部类中的方法、字段都标记为 static

@WithBy3

@StandardException:自定义异常类

?

文章来源:https://blog.csdn.net/m0_58660225/article/details/135358153
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。