Lombok 操作手册(一)

这里介绍一款工具,用来某种程度上解释下为啥我在 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();
		
		
	}

发布了40 篇原创文章 · 获赞 29 · 访问量 9万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章