这里介绍一款工具,用来某种程度上解释下为啥我在 GitHub 上 号召代码整洁。
具体优点不在这里赘述,核心就是能少些代码完成同样的功能
这款工具的名字叫做 Lombok 官网地址
安装教程我以及怎样在项目中引用 我就不写了,具体去看官网视频,但是关于安装有两点注意事项要说下
- 建议下载下来jar自己双击安装,选择Eclipse路径时候选到exlipse.ini 所在的那一级目录下,安装完成后在这个目录下会多一个jar包,同时eclipse.ini末尾多了这么一句
-javaagent:lombok.jar
- 如果你是通过快捷方式启动Eclipse ,那么安装完之后,可能无法启动,原因是他忽略了配置文件的写入,建议去目录下重新生成快捷方式
/**
* val 的运用
* @return
*/
public String finalExample() {
// 一下两句代码效果一样 区别在于 lombok 的运用
val example = new ArrayList<String>();
//final ArrayList<String> example = new ArrayList<String>();
example.add("Hello");
example.add("world");
// 一下两句代码效果一样 区别在于 lombok 的运用
val foo = example.get(0);
//final String foo = example.get(0);
return foo.toLowerCase();
}
@NonNull 的运用
/**
* @NonNull 的运用
* 在入参列表中 加入这个注解 就可以省去 方法内部的if 为空的判断
* 这个注解会自动在方法内对该参数进行是否为空的校验,如果为空,则抛出NPE
*/
private String id;
public void NonNullExample(@NonNull LombokUser user) {
if(user == null){
throw new NullPointerException("用户对象为空");
}
this.id = user.getId();
}
@SneakyThrows的运用
/**
* @SneakyThrows
* 作用就是抛出异常
* 对于拟不想处理的异常,直接在类上这样抛出,分分钟简化代码
* @param bytes
* @return
*/
@SneakyThrows(UnsupportedEncodingException.class)
public String utf2Strinig(byte [] bytes) {
return new String(bytes,"UTF-8");
}
@Getter(lazy=true) 的运用
/**
* @Getter(lazy=true)
* 这个注解的作用相当于缓存,就是我在第一次调用后这个值会一直存在,不在浪费资源去重复生成了
* 使用了getter这个annotation可以在实际使用到cached的时候生成cached,同时,Lombok会自动去管理线程安全的问题,不会存在重复赋值的问题
*/
@Getter(lazy=true)private final String lazyCache = newLazyData();
private String newLazyData() {
StringBuilder builder =new StringBuilder();
for(int i = 0; i < 10*10; ++i) {
builder.append("data" + i);
}
return builder.toString();
}