lombok使用笔记

Lombok是一个能提升编码效率的库,通过ASM在编译时自动插入代码,避免重复的手动编写getter、setter等。它提供了如@Setter、@Getter、@ToString、@EqualsAndHashCode等注解,支持懒加载、无参构造、全参构造和不可变类。此外,Lombok还支持@Log4j等日志注解和@Builder用于建造者模式,甚至能用@Delegate实现委托功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Lombok

作用:帮使用者提高编码效率,减少重复与冗余的代码

原理:ASM 动态修改class文件

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

     <build>
      <plugins>
          <plugin>
              <groupId>org.projectlombok</groupId>
              <artifactId>lombok-maven-plugin</artifactId>
              <version>1.16.6.1</version>
          </plugin>
      </plugins>
    </build>

@Setter

@Getter

@ToString

@Getter(lazy = true)   //懒加载

private final List<Integer> ids = Arrays.asList(1, 2, 3, 4); private String name;

@EqualsAndHashCode    //生成equals方法与hashCode方法

public class LombokDemo

@NoArgsConstructor   //添加一个无参构造函数

@AllArgsConstructor 添加一个所有参数的构造函数

@RequiredArgsConstructor   //生成一个包含必填参数的构造函数,要与@NonNull 搭配使用,该注解修饰的属性就是必填参数

public class LombokDemo {

@NonNull private Integer id; private String name;

}

@Data

这是一个综合注解了,等于同时使用

@Getter@Setter@ToString@EqualsAndHashCode,@RequiredArgsConstructor

@Value

创建不变类

扩展:不可变类是指创建该类的实例后,该实例的实例变量是不可改变的。Jav提供的8个包装类和java.lang.String类都是不可变类。

@Accessors

这个注解要搭配@Getter与@Setter使用,用来修改默认的setter与getter方法的形式

日志相关 

@Log4j

public class LombokDemo {

 

private static final Logger log = Logger.getLogger(LombokDemo.class);

@Slf4j

public class LombokDemo {

 

private static final Logger log = LoggerFactory.getLogger(LombokDemo.class);

设计模式相关

@Builder   //通过建造者模块来生成bean

@Builder
public class LombokDemo {

  private Integer id;
  private String name;
}

扩展:

建造模式:

在开发过程,有的时候会出现一个复杂对象的创建工作,这个对象一般组装模式固定,但是其中的参数会变

 

builder.installOS("CentOS").installLanguage("Java").installServer("Tomcat").installDatabase("Mysql");

@Delegate注释的属性,会把这个属性对象的公有非静态方法合到当前类

public class LombokDemo {

  @Delegate
  private Integer id;
  private String name;
}

举例:

  public short shortValue() {
      return this.id.shortValue();
  }

  public int intValue() {
      return this.id.intValue();
  }

工具相关:

给方法加一个同步块

  @Synchronized
  public void test() throws IOException {

      System.out.println("test");

  }

设置不能为空的参数

  public void test(@NonNull String val) {

  }

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值