Lombok

一、简介

  • 是一个 Java 库
  • 通过使用注解来简化 Java 代码的编写,用于生成常见的代码,如 getter, setter, equals, hashCode, 构造函数 等方法
  • 安装插件 Lombok
  • 引入依赖
    • <!-- Lombok依赖 为了简化实体类的编写代码量 -->
      <dependency>
          <groupId>org.projectlombok</groupId>
          <artifactId>lombok</artifactId>
          <optional>true</optional>
      </dependency>


 二、使用

1. @val

  • 取代任意类型作为局部变量
  • public static void example() {
        // val 代替 ArrayList<String>
        val ex = new ArrayList<String>();
        ex.add("test");
        // val 代替 String
        val ex1 = ex.get(0);
    }

2. @NonNull

  • 修饰方法,做非空判断,若传入空值会报 NullPointerException
  • public  NonNullExample(@NonNull String name){
        this.name = name;
    }

3. @Cleanup

  • 自动在使用后关闭资源
  • public void cleanupTest throws IOException {
        String inStr = "Hello World!";
    
        //使用输入输出流自动关闭,无需编写try catch和调用close()方法
        @Cleanup ByteArrayInputStream in = new ByteArrayInputStream(inStr.getBytes("UTF-8"));
        @Cleanup ByteArrayOutputStream out = new ByteArrayOutputStream();
    
        byte[] b = new byte[1024];
        while (true) {
            int r = in.read(b);
            if (r == -1) break;
            out.write(b, 0, r);
        }
        String outStr = out.toString("UTF-8");
        System.out.println(outStr);
    }

4. @Getter/@Setter

  • 修饰变量或类,生成对应变量的 getter/setter 方法

5. @ToString

  • 生成默认包含所有类属性的 toString 方法

6. @EqualsAndHashCode

  • 生成默认包含所有类属性的 hashCode 和 equals 方法

7. @XxConstructor

  • @NoArgsConstructor、@RequiredArgsConstructor、@AllArgsConstructor

8. @Data

  • 修饰类,4、5、6、7的组合体

9. @Value

  • 修饰类,声明其为 final 类,无法被继承,且属性也都变为 final

10. @Builder

  • 通过建造者模式来创建对象,使用链式调用

11. @SneakyThrows

  • 自动捕获并抛出异常,替代 try …… catch

12. @Synchronized

  • 修饰方法,替代关键字 synchronized 实现同步访问,多个线程同步调用一个方法

13. @With

  • 修饰类,实现原对象克隆,并改变其中一个属性
  • @With
    @AllArgsConstructor
    public class WithExample {
    
        private Long id;
        private String name;
        private Integer age;
    
        public static void main(String[] args) {
    
            WithExample example1 = new WithExample(1L, "test", 20);
    
            //将原对象进行clone并设置age,返回false
            WithExample example2 = example1.withAge(22);
            System.out.println(example1.equals(example2));
        }
    }

14. @Getter(lazy=true)

  • 修饰属性,对比较消耗资源的属性实现懒加载

15. @Log

  • 修饰类,生成日志对象 log,通过 log 对象打印日志
  • @Log
    public class LogExample {
        public static void main(String[] args) {
            log.info("level info");
            log.warning("level warning");
            log.severe("level severe");
        }
    }

16. @Slf4j

  • 另一种日志实现,除此以外还有 @Log4j, @Log4j2 等
  • import org.slf4j.Logger;
    import org.slf4j.LoggerFactor;
    
    private static final Logger LOGGER = LoggerFactor.getLogger(leiming.class);
    LOGGER.debug("模板:{}", charuduixiang)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值