这里主要抒写下Lombok中许多常用的方法:
首先引入相关依赖
1 |
|
Lombok注解
@Data:注解在类上,将类提供的所有属性都添加get、set方法,并添加、equals、canEquals、hashCode、toString方法
@Setter:注解在类上,为所有属性添加set方法、注解在属性上为该属性提供set方法
@Getter:注解在类上,为所有的属性添加get方法、注解在属性上为该属性提供get方法
@NotNull:在参数中使用时,如果调用时传了null值,就会抛出空指针异常
@Synchronized 用于方法,可以锁定指定的对象,如果不指定,则默认创建一个对象锁定
@Log作用于类,创建一个log属性
@Builder:使用builder模式创建对象
@NoArgsConstructor:创建一个无参构造函数
@AllArgsConstructor:创建一个全参构造函数
@ToString:创建一个toString方法
@Accessors(chain = true)使用链式设置属性,set方法返回的是this对象。
@RequiredArgsConstructor:创建对象, 例: 在class上添加@RequiredArgsConstructor(staticName = “of”)会创建生成一个静态方法
@UtilityClass:工具类
@ExtensionMethod:设置父类
@FieldDefaults:设置属性的使用范围,如private、public等,也可以设置属性是否被final修饰。
@Cleanup: 关闭流、连接点。
@EqualsAndHashCode:重写equals和hashcode方法。
@toString:创建toString方法。
@Cleanup: 用于流等可以不需要关闭使用流对象.
这里主要说下@Accessors(chain = true),使用链式创建
1.常规的实体赋值如下:
可以明显的看出实例化一个指定的类然后用类名.属性名去复制。
2.现在用注解@Accessors(chain = true),这个注解来修饰类:
可以看出来使用了改注解后可以直接使用类名.属性名直接set数据,而不用每个数据都去使用
这样代码的整洁和布局也会有进一步的提升。
3.顺带说一下清理流对象的注解:
@Cleanup 自动资源管理:没有麻烦和安全地调用您的close()
方法。
您可以使用@Cleanup
以确保在代码执行路径退出当前作用域之前自动清除给定资源。您可以通过使用@Cleanup
注释任何局部变量声明来执行此操作: @Cleanup InputStream in = new FileInputStream("xx/file");
结果,在您作用域范围的末尾调用in.close()
。保证通过try / finally构造运行此调用。
如果要清理的对象类型没有close()
方法,但是有其他一些无参数方法,则可以指定此方法的名称,如下所示: @Cleanup("dispose") org.eclipse.swt.widgets.CoolBar bar = new CoolBar(parent, 0);
默认情况下,清除方法被假定为close()
。@Cleanup
无法调用带有1个或多个参数的清理方法。
1.使用@Cleanup注解 :
2.常规的处理方法:
单单从代码的行数上面就可以知道已经精简了不少,同时,代码的可读性也进一步提高。从代码中我们可以容易的看出,@Cleanup的作用就是在当前变量不在有效范围内的时候,对其进行自动的资源回收。在Java中的Stream上使用Cleanup Annotation,就是对其调用close方法
Cleanup 存在一个小问题:
官网给出了提示,如果你的代码中出现了异常,那么会触发cleanup方法抛出异常,导致把原始异常吞掉,这样就导致你在上层不知道发生了什么事情,但是如果说你是在调用close方法的时候出了异常,那么Cleanup这个annotation是不会把异常吞掉的。