背景
lombok库提供了一些注解来简化java代码
官网:http://projectlombok.org/
查看lombok所有api:https://projectlombok.org/api/overview-summary.html
几个常用的 lombok 注解:
@val : 和 scala 中 val 同名, 可以在运行时确定类型;
@NonNull : 注解在参数上, 如果该类参数为 null , 就会报出异常, throw new NullPointException(参数名)
@Cleanup : 注释在引用变量前, 自动回收资源 默认调用 close() 方法
@Getter/@Setter : 注解在类上, 为类提供读写属性
@Getter(lazy=true) :
@ToString : 注解在类上, 为类提供 toString() 方法
@EqualsAndHashCode : 注解在类上, 为类提供 equals() 和 hashCode() 方法
@NoArgsConstructor, @RequiredArgsConstructor, @AllArgsConstructor : 注解在类上, 为类提供无参,有指定必须参数, 全参构造函数
@Data : 注解在类上, 为类提供读写属性, 此外还提供了 equals()、hashCode()、toString() 方法
@Value :
@Builder : 注解在类上, 为类提供一个内部的 Builder
@SneakThrows :
@Synchronized : 注解在方法上, 为方法提供同步锁
@Log :
@Log4j : 注解在类上, 为类提供一个属性名为 log 的 log4j 的日志对象
@Slf4j : 注解在类上, 为类提供一个属性名为 log 的 log4j 的日志对象
@Cleanup("dispose") org.eclipse.swt.widgets.CoolBar bar = new CoolBar(parent, 0);
@Cleanup InputStream in = new FileInputStream(args[0]);
@Cleanup OutputStream out = new FileOutputStream(args[1]);
实现原理:
Lombok不是通过字节码改写来实现的。
它主要是用编译器内支持的annotation processing,直接操纵抽象语法树(AST),根据需要添加新节点。
代码中使用(举两个例子,更多的可以看官网api)
@Slf4j使用
import lombok.extern.slf4j.Slf4j;
@Slf4j
public class LogExample {
}
生成后的数据
public class LogExample {
private static final org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(LogExample.class);
}
@Getter使用
private @Getter int foo;
上将编译成
public int getFoo() {
return this.foo;
}
使用方法
1.在pom.xml引包
org.projectlombok
lombok
compile
2.在包目录的地址栏输入:cmd
3.在dos命令行输入:java -jar lombok-1.16.20.jar
4.在弹出框选择需要安装的IDE,点击install/update按钮,即可安装完成
5.安装完成之后,确认eclipse安装路径下是否多了一个lombok.jar包
6.配置文件eclipse.ini中是否 添加了如下内容:
-javaagent:lombok.jar
-Xbootclasspath/a:lombok.jar
如果都有,就成功
7.安装成功,使用不了的原因:没有重启IDE,没有clean项目,lombok版本太低等等