@NonNull
- 用在方法或构造方法参数上,表示参数非空
- 用在类成员你变量上,表示属性非空
@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用到类上
- 可以自定义那些属性打印出来,那些属性不打印:
- @ToString.Exclude用到属性上,默认所有non-static field都会被打印
- 也可以手动指定那些属性需要打印:@ToString(onlyExplicitlyIncluded = true)用到类上,@ToString.Include用在属性上,只有显示声明了@ToString.Include的属性才会被加到输出
- 可将父类toString()的输出附加到本类的toString后面,加到类上@ToString(callSuper=true, includeFieldNames=true)
- 可指定将某个方法的输出附加到本类的toString后面,只能是non-static的无参方法,@ToString.Include用到方法上,@ToString(includeFieldNames=true)加到类上
- 注意,如果本类不是继承自某自定义类(toString()方法特别重载过),默认父类的toString()输出没啥意义
- 可指定修改某些属性的名字@ToString.Include(name = “some other name”)用到属性上
- 可以改变属性输出的顺序 @ToString.Include(rank = -1)用到属性上,默认为0,rank值越大先打印,相同rank值按照定义的顺序先后打印
- 输出的格式:MyClass(foo=123, bar=234)
参考:https://projectlombok.org/features/