ieflex的gravatar头像
ieflex 2019-05-14 15:02:23
lombok的使用与eclipse配置lombok插件

背景
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引包


<!-- 增加lombok依赖,可以使用注解@Data 编译时自动生成get,set方法,构造函数,toString方法 -->
<dependency>
	<groupId>org.projectlombok</groupId>
	<artifactId>lombok</artifactId>
	<scope>compile</scope>
</dependency>

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版本太低等等
 


打赏
最近浏览
wanbangfei 2022年3月4日
暂无贡献等级
crazyda  LV2 2020年7月7日
Robust28 2020年6月17日
暂无贡献等级
wangbaishizi  LV2 2020年5月29日
dongguangming 2020年5月24日
暂无贡献等级
一念永恒  LV4 2020年5月14日
花宫暮雪  LV5 2020年5月1日
futiange  LV2 2020年4月7日
流川枫  LV8 2020年2月29日
wenwenerya 2020年1月21日
暂无贡献等级
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友