我只取我需要关注的,或者说我要打笔记的点,灵感动机来自于刚到公司接触的项目让我初识LomBok.LomBok官方文档可以点击这里
我认为lombok的主要作用有两点,1.简化代码 2.提高代码可读性 表层原因是消除千篇一律的无用代码,至于哪些代码,可以往下看.
先看怎么用再看为什么.
@NonNull注解标注方法和构造器的参数(用在参数前,eg: (@NonNull String id)
),如果参数为null,则会抛出空指针异常,或者用于变量上,不需要在代码中进行null检测
@ToString注解用于类上生成toString()方法
@ToString.Exclude
private String age;
用于类上生成一个无参数的构造方法,变量需要用final修饰
自动生成无参数构造函数。
自动生成全参数构造函数。
自动为所有字段添加@ToString, @EqualsAndHashCode, @Getter方法,为非final字 段添加@Setter,和@RequiredArgsConstructor,对于POJO类十分有用
@Value注解为不可变类型的@Data,是@Data的一个变种。只提供getter方法,而不提供setter方法.它标注的类和字段都会被声明为final
@Builder注解为类生成builder api以供调用。Builder是一种解决包含数量巨大且繁杂的字段的类的一种构建方式。
@Log注解为类添加一个日志对象log,类型为java.util.logging.Logger
@CleanUp注解用于关闭资源,调用资源的close()方法,有点逆天啊
自动管理资源,用在局部变量之前,在当前变量范围内即将执行完毕退出之前会自动清理资源,自动生成try-finally这样的代码来关闭流
害~上面的注解,咱也就用到了几个常用的@data @AllArgsConstructor
看了咋用的后,再看为什么
Lombok本质上就是一个实现了“JSR 269 API”的程序。在使用javac的过程中,它产生作用的具体流程如下:
看起来有点像大学时候学的编译原理,简单说就是编译时候,响应的注解相当于一个标识,lombok程序会启动并对之前的源码种的标识进行处理生成一些支撑代码(我们之前省略的大量代码),运行的时候省略的代码相当于已经补上了,那么自然跟我们之前全部写了效果等同.