首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >【lombok】 使用及常用注解

【lombok】 使用及常用注解

作者头像
master336
发布2026-06-15 19:46:57
发布2026-06-15 19:46:57
90
举报
目录

  • 原理及引入
    • maven依赖引入
    • 插件支持
  • 注解说明
    • @AllArgsConstructor
      • 作用类型
      • 用法说明
      • 说明
    • @Builder
      • 作用类型
      • 用法说明
      • 代码示例
          • 源码
          • 编译后
    • @Cleanup
      • 作用类型
      • 用法说明
      • 代码示例
          • 源码
          • 编译后
    • @CustomLog
      • 作用类型
      • 用法说明
      • 代码示例
          • 源码
          • 编译后
    • @Data
      • 作用类型
      • 用法说明
    • @Delegate
      • 作用类型
      • 用法说明
    • @EqualsAndHashCode
      • 作用类型
      • 用法说明
    • @Generated
      • 作用类型
      • 用法说明
    • @Getter
      • 作用类型
      • 用法说明
      • 代码示例
          • 源码
          • 编译后
    • @NoArgsConstructor
      • 作用类型
      • 用法说明
    • @NonNull (未实现)
      • 作用类型
      • 用法说明
    • @RequiredArgsConstructor
      • 作用类型
      • 用法说明
    • @Setter
      • 作用类型
      • 用法说明
    • @Singular
      • 作用类型
      • 用法说明
    • @SneakyThrows
      • 作用类型
      • 用法说明
      • 代码示例
          • 源码
          • 编译后
    • @Synchronized
      • 作用类型
      • 用法说明
    • @ToString
      • 作用类型
      • 用法说明
      • 代码示例
          • 源码
          • 编译后
    • @Value
      • 作用类型
      • 用法说明
    • @With
      • 作用类型
      • 用法说明
      • 代码示例
          • 源码
          • 编译后

原理及引入

lombok 基于JSR 269 (可插拔注释)规范,通过修改语法树(AST)供javac在编译时使用。

maven依赖引入

代码语言:javascript
复制
<dependency>
	<groupId>org.projectlombok</groupId>
	<artifactId>lombok</artifactId>
</dependency>

注解说明

**特别提醒:**lombok 的注解包括但不限于如下这些,同时并不意味着所有可用的注解均无使用风险,lombok应根据软件开发环境决定,对一些不稳定的应尽量少用,或者不用。

@AllArgsConstructor

作用类型

ElementType.TYPE

用法说明

生成一个all args构造函数。all args构造函数要求类中的每个字段都有一个参数。 完整的文档可以在@Constructor的项目lombok功能页面上找到。 即使未列出该注释,该注释也具有onConstructor参数。有关更多详细信息,请参阅完整文档。 另见:NoArgsConstructor,RequiredArgsConstructor

说明

新增/删减属性时影响编译结果,可能造成代码不稳定

@Builder

作用类型

ElementType.TYPE, ElementType.METHOD, ElementType.CONSTRUCTOR

用法说明

生成器注释为被注释的类或包含用@builder注释的成员的类创建所谓的“生成器”方面。 如果对成员进行了注释,则该成员必须是构造函数或方法。如果对一个类进行了注释,则会生成一个包专用构造函数,其中所有字段都是参数(就像类中存在@AllArgsConstructor(access=AccessLevel.package)),就好像这个构造函数是用@Builder注释的。请注意,仅当您没有编写任何构造函数,也没有添加任何显式@xargsconstuctor注释时,才会生成此构造函数。在这些情况下,lombok将假定存在一个all args构造函数,并生成使用它的代码;这意味着如果这个构造函数不存在,就会出现编译器错误。 @Builder的作用是生成一个名为TBuilder的内部类,其中包含一个私有构造函数。TBuilder的实例是使用名为builder()的方法生成的,该方法也是在类本身(而不是在builder类中)中为您生成的。 TBuilder类为带注释的构造函数/方法(在注释类时,每个字段)的每个参数包含一个方法,该方法返回生成器本身。生成器还有一个build()方法,该方法返回原始类型的完整实例,该实例是通过生成器中的各种其他方法将设置好的所有参数传递给用@builder注释的构造函数或方法而创建的。此方法的返回类型将与相关类相同,除非对某个方法进行了注释,在这种情况下,它将等于该方法的返回类型。 完整的文档可以在@Builder的project lombok功能页面上找到。

代码示例
源码
代码语言:javascript
复制
 @Builder
   class Example<T> {
   
   
   	private T foo;
   	private final String bar;
   }
编译后
代码语言:javascript
复制
class Example<T> {
   
   
   	private T foo;
   	private final String bar;
   	
   	private Example(T foo, String bar) {
   
   
   		this.foo = foo;
   		this.bar = bar;
   	}
   	
   	public static <T> ExampleBuilder<T> builder() {
   
   
   		return new ExampleBuilder<T>();
   	}
   	
   	public static class ExampleBuilder<T> {
   
   
   		private T foo;
   		private String bar;
   		
   		private ExampleBuilder() {
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-02-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 目录
  • 原理及引入
    • maven依赖引入
  • 注解说明
    • @AllArgsConstructor
      • 作用类型
      • 用法说明
      • 说明
    • @Builder
      • 作用类型
      • 用法说明
      • 代码示例
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档