前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Lombok常用注解

Lombok常用注解

作者头像
ha_lydms
发布2023-08-10 08:55:43
1550
发布2023-08-10 08:55:43
举报
文章被收录于专栏:学习内容学习内容

一、简介

官网

代码语言:javascript
复制
https://projectlombok.org/
在这里插入图片描述
在这里插入图片描述

二、Idea中配置

在这里插入图片描述
在这里插入图片描述

三、Maven中配置

代码语言:javascript
复制
<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.18.22</version>
</dependency>

四、相应注解

1、@Data

作用位置: 类上(实体类)

用途:

是1个注解集合:

  • @ToString
  • @EqualsAndHashCode
  • @Getter
  • @Setter
  • @RequiredArgsConstructor

案例:

代码语言:javascript
复制
@Data
public class User {
    private String name;
    private int age;
    private String address;
}

2、@RequiredArgsConstructor

作用位置: 类上(实体类)

用途:

注解 集合:

  • @AllArgsConstructor
  • @NoArgsConstructor 案例:
代码语言:javascript
复制
@RequiredArgsConstructor
public class User {
    private String name;
    private int age;
    private String address;
}

3、@AllArgsConstructor

作用位置: 类上(实体类)

用途: 生成全参构造器 案例:

代码语言:javascript
复制
@AllArgsConstructor
public class User {
    private String name;
    private int age;
    private String address;
}

4、@NoArgsConstructor

作用位置: 类上(实体类)

用途: 生成无参构造器 案例:

代码语言:javascript
复制
@NoArgsConstructor
public class User {
    private String name;
    private int age;
    private String address;
}

5、@Getter/@Setter:

作用位置: 类上(实体类)、成员变量

用途:

作用类上:生成所有成员变量的getter/setter方法 成员变量:生成该成员变量的getter/setter方法 案例:

代码语言:javascript
复制
@Getter
@Setter
public class User {
    private String name;
    private int age;
    private String address;
}

6、@ToString

作用位置: 作用于类。

用途: 覆盖默认的toString()方法。 案例:

代码语言:javascript
复制
@ToString
public class User {
    private String name;
    private int age;
    private String address;
}

7、@EqualsAndHashCode

作用位置: 作用于类

用途: 覆盖默认的equals和hashCod 案例:

代码语言:javascript
复制
@EqualsAndHashCode
public class User {
    private String name;
    private int age;
    private String address;
}

8、@Builder

作用位置: 作用于类上

用途: 将类转变为建造者模式 案例:

代码语言:javascript
复制
import lombok.Builder;

@Builder
public class User {
    private String name;
    private int age;
    private String address;
}


public void test() {
    User build = User.builder()
            .name("张三")
            .age(18)
            .address("北京")
            .build();
}

9、@NonNull

作用位置: 成员变量和参数中

用途: 标识不能为空,否则抛出空指针异常 案例:

代码语言:javascript
复制
public NonNullExample(@NonNull Person person) {
   super("Hello");
   this.name = person.getName();
}

10、@Log

作用位置: 作用于类上

用途: 生成日志变量。针对不同的日志实现产品,有不同的注解

代码语言:javascript
复制
java.util.logging.Logger
java.util.logging.Logger#getLogger(java.lang.String)
@CommonsLog
@Log4j
@Log4j2
@Slf4j
@XSlf4j
@JBossLog
@Flogger
@CustomLog

案例:

代码语言:javascript
复制
@Log
public class Test {
    public void test() {
    }
}

11、@Slf4j

作用位置:

用途: 表明使用slf4j日志门面 案例:

代码语言:javascript
复制
@Slf4j
public class LogExampleOther {
  
  public void test() {
    log.error("Something else is wrong here");
  }
}

12、@Log4j2

作用位置:

用途:

  • 自动关闭资源
  • 针对实现了java.io.Closeable接口的对象有效,如:典型的IO流对象

案例:

代码语言:javascript
复制
@Log4j2
public class LogExampleOther {
  
  public void test() {
    log.error("Something else is wrong here");
  }
}

13、@SneakyThrows

作用位置:

用途: 可以对受检异常进行捕捉并抛出 案例:

代码语言:javascript
复制
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();
  }
}

14、@Cleanup

作用位置: 案例:

代码语言:javascript
复制
import lombok.Cleanup;
import java.io.*;

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);
    }
  }
}

15、@Synchronized

  • 作用于方法级别,可以替换synchronize关键字或lock锁
  • 用处不大

16、@SneakyThrows

使用位置: 方法

作用: 可以将方法中的代码用 try-catch 语句包裹起来,捕获异常并在 catch 中用 Lombok.sneakyThrow(e) 把异常抛出,可以使用 @SneakyThrows(Exception.class) 的形式指定抛出哪种异常。

案例:

代码语言:javascript
复制
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();
  }
}

效果:

代码语言:javascript
复制
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);
    }
  }
}

五、XMind整理

地址

代码语言:javascript
复制
https://download.csdn.net/download/weixin_44624117/87738347
在这里插入图片描述
在这里插入图片描述
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2023-07-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、简介
  • 二、Idea中配置
  • 三、Maven中配置
  • 四、相应注解
    • 1、@Data
      • 2、@RequiredArgsConstructor
        • 3、@AllArgsConstructor
          • 4、@NoArgsConstructor
            • 5、@Getter/@Setter:
              • 6、@ToString
                • 7、@EqualsAndHashCode
                  • 8、@Builder
                    • 9、@NonNull
                      • 10、@Log
                        • 11、@Slf4j
                          • 12、@Log4j2
                            • 13、@SneakyThrows
                              • 14、@Cleanup
                                • 15、@Synchronized
                                  • 16、@SneakyThrows
                                  • 五、XMind整理
                                  领券
                                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档