Lombok注解概览

本文介绍了Lombok注解的应用,包括@NonNull用于确保参数非空,@Builder用于简化对象构建过程,@Cleanup自动管理资源,以及@ToString、@Getter、@Setter等注解自动生成类的方法。这些注解能显著减少样板代码。

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

@NonNull
  1. 用在方法或构造方法参数上,表示参数非空
  2. 用在类成员你变量上,表示属性非空
@Builder

用在类上,假设类成员变量有 name,age
builder()返回内部的静态builder类对象 BuilderXXX
BuilderXXX.name(“c”).age("12).build()设置成员变量值并构造一个类对象然后返回

@Cleanup

用在 local variable上,在 执行线程到达current scope end时且退出current scope之前自动清除资源,lombok保证用try,finally 来调用
比如文件句柄就会自动调用 close()
注意 @Cleanup默认调用 无参的close(),如果资源没有close()方法,而是其他无参方法可以手动指定,但是有一个以上的参数的资源清理方法无法被@Cleanup调用

  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 (true) {
      int r = in.read(b);
      if (r == -1) break;
      out.write(b, 0, r);
    }
  }
@setter,@getter

用在 class field上生成getter和setter方法
getter方法命令规则:如果field name是foo则为getFoo,如果field是boolean type则isFoo
setter方法命名规则:如果field name是foo则为setFoo

getter/setter方法的作用域:可以设置level属性值, 合法值有PUBLIC, PROTECTED, PACKAGE, and PRIVATE.
getter/setter可以直接用在class上,表示为所有non-static field设置get和set方法

@ToString

自定义将类和属性打印出来,@ToString用到类上

  1. 可以自定义那些属性打印出来,那些属性不打印:
    1. @ToString.Exclude用到属性上,默认所有non-static field都会被打印
    2. 也可以手动指定那些属性需要打印:@ToString(onlyExplicitlyIncluded = true)用到类上,@ToString.Include用在属性上,只有显示声明了@ToString.Include的属性才会被加到输出
  2. 可将父类toString()的输出附加到本类的toString后面,加到类上@ToString(callSuper=true, includeFieldNames=true)
  3. 可指定将某个方法的输出附加到本类的toString后面,只能是non-static的无参方法,@ToString.Include用到方法上,@ToString(includeFieldNames=true)加到类上
    1. 注意,如果本类不是继承自某自定义类(toString()方法特别重载过),默认父类的toString()输出没啥意义
  4. 可指定修改某些属性的名字@ToString.Include(name = “some other name”)用到属性上
  5. 可以改变属性输出的顺序 @ToString.Include(rank = -1)用到属性上,默认为0,rank值越大先打印,相同rank值按照定义的顺序先后打印
  6. 输出的格式:MyClass(foo=123, bar=234)

参考:https://projectlombok.org/features/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值