美文网首页
Lombok 常用注解

Lombok 常用注解

作者: almj | 来源:发表于2022-01-21 17:36 被阅读0次

经常用 @Data 注解标记在实体类上面快速实现gettersetter, 而它好用地注解应该不至于这一个,下面是常用的注解汇总:
1. @Data 注解 : 一般用在类上,提供类所有属性的 getset 方法,此外还提供了equalscanEqualhashCodetoString等方法;
2. @Setter 注解:一般用在属性上,为属性提供 set 方法, 用在再类上则表示当前类中所有属性都生成set方法;
3. @Getter 注解:用在属性上,为属性提供 get 方法, 用在再类上表示当前类中所有属性都生成get方法;
4. @Log4j or @Slf4j 注解 :用在类上,为类提供一个 属性名为loglog4j日志对象;
5. @NoArgsConstructor注解:用在类上,为类提供一个无参的构造方法;
6. @AllArgsConstructor注解:用在类上,为类提供一个全参的构造方法;
7. @RequiredArgsConstructor注解: 用在类上,生成一个包含 "特定参数" 的构造器,特定参数指的是那些有加上 final 修饰词的变量们;
8. @Builder注解: 用在类上,自动生成流式 set 值写法,从此之后再也不用写一堆 setter 了;

image.png

注意,虽然只要加上 @Builder 注解,我们就能够用流式写法快速设定对象的值,但是 setter 还是必须要写不能省略的,因为 Spring 或是其他框架有很多地方都会用到对象的 getter/setter 对他们取值/赋值所以通常是 @Data@Builder 会一起用在同个类上,既方便我们流式写代码,也方便框架做事;
9. @Cleanup注解: 可以用在 IO 流上,用于关闭并释放资源;
例如下面例子,每次IO流操作后要在finally中关闭流,释放资源:

public class CleanupExample {
  public static void main(String[] args) throws IOException {
    InputStream in = new FileInputStream(args[0]);
    try {
      OutputStream out = new FileOutputStream(args[1]);
      try {
        byte[] b = new byte[10000];
        while (true) {
          int r = in.read(b);
          if (r == -1) break;
          out.write(b, 0, r);
        }
      } finally {
        if (out != null) {
          out.close();
        }
      }
    } finally {
      if (in != null) {
        in.close();
      }
    }
  }
}

类似以上的一个IO流操作的方法使用lombok 的 @Cleanup 注解后可以简化成这样:

public class CleanupExample {
    public static void main(String[] args) throws IOException {
        @Cleanup InputStream in = new FileInputStream(args[0]);
        @Cleanup OutputStream out = new FileOutputStream(args[1]);
        byte[] b = new byte[10000];
        while (true) {
            int r = in.read(b);
            if (r == -1) break;
            out.write(b, 0, r);
        }
    }
}
  1. @SneakyThrows 注解:利用了这一机制,将当前方法抛出的异常,包装成RuntimeException,骗过编译器,使得调用点可以不用显示处理异常信息,使用注解后不需要担心Exception的处理。例如:
import lombok.SneakyThrows;

public class SneakyThrowsExample implements Runnable {
  @SneakyThrows(UnsupportedEncodingException.class)
  public String utf8ToString(byte[] bytes) {
    return new String(bytes, "UTF-8");
  }
  
  @SneakyThrows
  public void run() {
    throw new Throwable();
  }
}

真正生成的代码

import lombok.Lombok;

public class SneakyThrowsExample implements Runnable {
  public String utf8ToString(byte[] bytes) {
    try {
      return new String(bytes, "UTF-8");
    } catch (UnsupportedEncodingException e) {
      throw Lombok.sneakyThrow(e);
    }
  }
  
  public void run() {
    try {
      throw new Throwable();
    } catch (Throwable t) {
      throw Lombok.sneakyThrow(t);
    }
  }
}

相关文章

  • Java基础系列-Lombok常用注解

    原创文章,转载请标注出处:《Java基础系列-Lombok常用注解》 Lombok注解解析: @NonNull 使...

  • Lombok常用注解

    和其他语言相比, Java经常因为不必要的冗长被批评。 Lombok提供了一系列注解用以在后台生成模板代码,将其从...

  • Lombok常用注解

    Project Lombok is a java library that automatically plugs...

  • Lombok常用注解

    Lombok常用注解 加入 maven 依赖 1. @Getter/@Setter 自动产生 getter/set...

  • Lombok 常用注解

    经常用 @Data 注解标记在实体类上面快速实现getter 和 setter, 而它好用地注解应该不至于这一个,...

  • Lombok常用注解

    加入 maven 依赖 Lombok常用注解概览 1. @Getter/@Setter 自动产生 getter/s...

  • Lombok常用注解

    加入 maven 依赖 1. @Getter/@Setter 自动产生 getter/setter 2. @ToS...

  • 2.使用lombok

    lombok:使用注解的形式来简化一些必要但重复性的代码,在编译时生成对应的代码。 几个常用的 lombok 注解...

  • Gradle项目引入Lombok

    接前面一篇文章 《Lombok常用注解的使用总结》 这里主要讲解,如何在Gradle项目中引入Lombok依赖。 ...

  • 常用的 lombok 注解

    转载自:https://blog.csdn.net/mccand1234/article/details/5345...

网友评论

      本文标题:Lombok 常用注解

      本文链接:https://www.haomeiwen.com/subject/ucxdgltx.html