Lombok 操作手册(一)

时间:2022-09-19 08:41:11

这里介绍一款工具,用来某种程度上解释下为啥我在 GitHub 上 号召代码整洁。

具体优点不在这里赘述,核心就是能少些代码完成同样的功能

这款工具的名字叫做 Lombok 官网地址

安装教程我以及怎样在项目中引用 我就不写了,具体去看官网视频,但是关于安装有两点注意事项要说下

  • 建议下载下来jar自己双击安装,选择Eclipse路径时候选到exlipse.ini 所在的那一级目录下,安装完成后在这个目录下会多一个jar包,同时eclipse.ini末尾多了这么一句
  • -javaagent:lombok.jar
  • 如果你是通过快捷方式启动Eclipse ,那么安装完之后,可能无法启动,原因是他忽略了配置文件的写入,建议去目录下重新生成快捷方式
接下来主要说说API        @Log 日志相关的操作,这个看官方教程 点我                 val:这个严格说不算是注解,是一个代替生命final 属性的简化          
/**
* 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();


}