3

java插件小王子->Lombok 使用介绍

本文主要讲述Lombok的日常使用
关于Lombok的安装可以看小编的另一篇文章:
https://segmentfault.com/a/11...

Lombok了解

java中对象的实体类中 getter和setter toString equals 构造方法等
这些基本的java代码你是否早已感到厌倦
虽然有工具强大的快捷键支持但总归还是非常影响我们代码书写的效率和美观的
因此Lombok诞生了 Lombok利用注解的方式便轻松的创建出一些对象类的基本方法 帮助我们消除一些java代码的冗长
如果你是第一次认识这个工具我相信你也会有一种想见恨晚的感觉

Lombok的使用

  • @Data:作用于类上 暴力的生成了以下注解所能生成的方法: @ToString @EqualsAndHashCode @Getter @Setter @RequiredArgsConstructor
  • 如果你不想这么暴力的写法 可以用以下的分步骤来操作
  • @Getter/@Setter:
    作用在类上 为成员属性提供set、get方法
    同时利用value属性设定方法访问范围

       @Setter(value=AccessLevel.PRIVATE)
       @Getter(value=AccessLevel.PUBLIC)
       class Student{
           private String name;
           private int age;
           private double money;
       }
  • @EqualsAndHashCode:
    作用于类,覆盖默认的equals和hashCode

       @EqualsAndHashCode
       class Student{
           private String name;
           private int age;
           private double money;
       }
  • @ToString:
    作用在类上 覆盖默认toString方法
    同时可以用of属性限定显示某些字段,通过exclude属性排除某些字 段

       @ToString(of= {"name","age"},exclude= {"money"})
       class Student{
           private String name;
           private int age;
           private double money;
       }
  • @NonNull:
    作用于成员变量上 声明属性不能为null否则抛出异常

       class Student{
         @NonNull  private String name;
           private int age;
           private double money;
       }
  • @NoArgsConstructor:生成无参构造器
  • @AllArgsConstructor:生成全参构造器
  • @RequiredArgsConstructor:生成被final修饰和被@NonNull注解的成员变量的构造器

    • ps:他们都有staticName和access属性
      代表生成静态的构造和通过access来设置访问属性

          @NoArgsConstructor(staticName="of",access=AccessLevel.PUBLIC)  
          @AllArgsConstructor  
          class Student{  
          @NonNull private String name;  
          private int age;  
          private double money;  
          }
  • @Accessors(chain = true) 开启对象方法的链式调用
  • @Log:作用在类上 生成日志变量
  • @Builder:作用在类上 使该类变为建造者模式
  • @Cleanup:
    作用在资源上 可以用于自动关闭像IO流这样的资源
  • @Synchronized:
    作用在方法上 可以代替对方法加锁的实现 但是要根据需求使用 小编在使用Lombok时 此注解并没有使用过
  • @SneakyThrows:
    作用在方法上 对异常进行抛出 可想而知也不是很常用


此处小编说一句题关于Lombok插件的题外话
Lombok这个插件 我觉得最起码做了很多程序员想做的事 即使他很简单
但是很多人由于插件的配置问题对插件进行一系列的penpenpen 如下图:

  • image.png

问题难道还不够明显吗 最简单的解决方式不就是 你自己转职或者直接把同事ds一顿不好吗 在这里喷插件! 自己的能力我看就不用多说了

不想做一个还没有拼搏就死掉了的程序员 !!!

Asen90
28 声望3 粉丝

头发已为技术献身