[Java]实用库:Lombok的使用笔记

Lombok的使用笔记

官网地址

  • Lombok通过修改AST(抽象语法树),在编译器编译时改变字节码生成,可以实现自动写get()set()方法等,极大地简化了Java的代码。

0. 安装

安装分为两部分:依赖和IDE插件。

  1. 以IDEA为例,需要在Settings-Plugins中安装lombok插件并重启;
  2. 然后以maven为例,配置 pom.xml 文件。
  <dependencies>
      <dependency>
          <groupId>org.projectlombok</groupId>
          <artifactId>lombok</artifactId>
          <version>1.18.12</version>
          <scope>provided</scope>
      </dependency>
  </dependencies>

常用的类/注解:

  • val/var :动态变量类型;
  • @NoArgsConstructor , @RequiredArgsConstructor , @AllArgsConstructor :自动构造函数;
  • @NonNull :空值检查;
  • @Cleanup :自动清除(try-finally机制);
  • @Getter/@Setter :自动 getset 方法;
  • @Data/@Value :自动POJO类 ;
  • @Log :自动日志 ;

1. val/var

  • 直接申请一个局部变量而不用具体写具体声明。二者区别为:前者是final类型的。
import java.util.ArrayList;
import java.util.HashMap;
import lombok.val; // 引入

public class ValExample {
   
  public String example() {
   
    val example = new ArrayList<String>();
    example.add("Hello, World!");
    val foo = example.get(0);
    return foo.toLowerCase();
  }
  
  public void example2() {
   
    val map = new HashMap<Integer, String>();
    map.put(0, "zero");
    map.put(5, "five");
    for (val entry : map.entrySet()) {
   
      System.out.printf("%d: %s\n", entry.getKey(), entry.getValue());
    }
  }
}

原生JAVA:

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;

public class ValExample {
   
  public String example() {
   
    final ArrayList<String> example = new ArrayList<String>();
    example.add("Hello, World!");
    final String foo = example.get(0);
    return foo.toLowerCase();
  }
  
  public void example2() {
   
    final HashMap<Integer, String> map = new HashMap<Integer, String>();
    map.put(0, "zero");
    map.put(5, "five");
    for (final Map.Entry<Integer, String> entry : map.entrySet()) {
   
      System.out.printf("%d: %s\n", entry.getKey(), entry.getValue());
    }
  }
}

2. @NonNull

  • 生成空检查语句。
import lombok.NonNull;

public class NonNullExample{
   
  private String name;
  
  public NonNullExample(@NonNull Person person) {
   
    System.out.println(person.getName());
  }
}

原生Java:

import lombok.NonNull;

public class NonNullExample extends {
   
  private String name;
  
  public NonNullExample(@NonNull Person person) {
   
    if (person == null) {
   
      throw new NullPointerException("person is marked @NonNull but is null");
    }
    System.out.println(person.getName());
  }
}

3. @Cleanup

  • 自动调用 close() 方法(或自定无参析构方法)做资源清理工作。
  • 自定无参析构方法如: @Cleanup("dispose") ,将会调用 dispose() 方法。
import lombok.Cleanup;
import java.io.*;

public class CleanupExample {
   
  public static void main(String[] args) throws IOException {
   
    @Cleanup InputStream in = new FileInputStream(args[0]);
    @Cleanup OutputStream out = new FileOutputStream(args[1]);
    byte[] b = new byte[10000];
    while 
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值