lombok 学习

本文详细介绍了Lombok注解的应用,包括@NonNull用于参数非空校验,@CleanUp自动清理资源,@Getter/@Setter自动生成getter和setter方法,@ToString生成toString方法,@Value/@Wither构建不可变类及修改其属性,@Builder实现简洁的建造者模式,以及@SneakyThrows简化异常处理等。
摘要由CSDN通过智能技术生成

官网镇楼

val,var, 只能用在局部变量

val  =  final var;

@NonNull  这个好像没什么好说的

import lombok.NonNull;

public class NonNullExample extends Something {
  private String name;
  
  public NonNullExample(@NonNull Person person) {
    super("Hello");
    this.name = person.getName();
  }
}

@CleanUp 清除缓存 自动添加 close等方法,清除缓存

import lombok.Cleanup;
import java.io.*;

public class CleanupExample {
  public static void main(String[] argsthrows IOException {
    @Cleanup InputStream in = new FileInputStream(args[0]);
    @Cleanup OutputStream out = new FileOutputStream(args[1]);
    byte[] b = new byte[10000];
    while (true) {
      int r = in.read(b);
      if (r == -1break;
      out.write(b, 0, r);
    }
  }
}


@Getter and @Setter

正常用法 @Getter @Setter private int age = 10;

@Setter(AccessLevel.PROTECTEDprivate String name;

// AccessLevel可以控制生成的 @Getter @Setter的修饰等级,参数:PUBLIC, PROTECTED, PACKAGE, and PRIVATE.

// 默认为 PUBLIC


@Tostring

 @ToString(callSuper=true, includeFieldNames=true)
  public static class Square extends Shape {
    private final int width, height;
    
    public Square(int width, int height) {
      this.width = width;
      this.height = height;
    }
  }

}

// 写在类前,有多个参数可选,主要是 callSuper, includeFieldNames,exclude


@Value 构建final类与@Wither 联用

@Value public class ValueExample {
  String name;
  @Wither(AccessLevel.PACKAGE@NonFinal int age;
  double score;
  protected String[] tags;
  
  @ToString(includeFieldNames=true)
  @Value(staticConstructor="of")
  public static class Exercise<T> {
    String name;
    T value;
  }

}

@Wither(AccessLevel.PACKAGE@NonFinal int age;

相当于

ValueExample withAge(int age) {
    return this.age == age ? this new ValueExample(name, age, score, tags);

  }

用于修改 final类的内容 // 返回一个新的对象

@Builder 用于创建builder模式

@Builder
public class BuilderExample {
  @Builder.Default private long created = System.currentTimeMillis();
  private String name;
  private int age;
  @Singular private Set<String> occupations;
}

BuilderExample be = new BuilderExample().name("sss")…………;

 @SneakyThrows 异常处理,添加try{}catch{};

@Synchronized 加锁;

@Getter(lazy=true) 节约计算和缓存;

@Log 奇怪的log



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值