当前位置: 首页 > news >正文

Lombok常用注解

文章目录

    • 一、简介
    • 二、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整理


一、简介

官网

https://projectlombok.org/

在这里插入图片描述

二、Idea中配置

在这里插入图片描述

三、Maven中配置

<dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.22</version>
</dependency>

四、相应注解

1、@Data

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

用途:

是1个注解集合:

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

案例:

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

2、@RequiredArgsConstructor

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

用途:

注解 集合:

  • @AllArgsConstructor
  • @NoArgsConstructor
    案例:
@RequiredArgsConstructor
public class User {private String name;private int age;private String address;
}

3、@AllArgsConstructor

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

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

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

4、@NoArgsConstructor

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

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

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

5、@Getter/@Setter:

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

用途:

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

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

6、@ToString

作用位置: 作用于类。

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

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

7、@EqualsAndHashCode

作用位置: 作用于类

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

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

8、@Builder

作用位置: 作用于类上

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

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

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

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

public NonNullExample(@NonNull Person person) {super("Hello");this.name = person.getName();
}

10、@Log

作用位置: 作用于类上

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

java.util.logging.Logger
java.util.logging.Logger#getLogger(java.lang.String)
@CommonsLog
@Log4j
@Log4j2
@Slf4j
@XSlf4j
@JBossLog
@Flogger
@CustomLog

案例:

@Log
public class Test {public void test() {}
}

11、@Slf4j

作用位置:

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

@Slf4j
public class LogExampleOther {public void test() {log.error("Something else is wrong here");}
}

12、@Log4j2

作用位置:

用途:

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

案例:

@Log4j2
public class LogExampleOther {public void test() {log.error("Something else is wrong here");}
}

13、@SneakyThrows

作用位置:

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


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

14、@Cleanup

作用位置:
案例:

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) 的形式指定抛出哪种异常。

案例:

import lombok.SneakyThrows;public class SneakyThrowsExample implements Runnable {@SneakyThrows(UnsupportedEncodingException.class)public String utf8ToString(byte[] bytes) {return new String(bytes, "UTF-8");}@SneakyThrowspublic 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);}}
}

五、XMind整理

地址

https://download.csdn.net/download/weixin_44624117/87738347

在这里插入图片描述

http://www.lryc.cn/news/63436.html

相关文章:

  • 加拿大各省接受公立教育的初始年龄汇总 — 供携子女赴加的访学、博后参考
  • 数字化工厂:虹科Vuzix AR眼镜在工业制造中的革新应用
  • 配置出接口方式的单服务器智能DNS
  • 数据结构初阶(栈和队列)
  • IDEA实用设置
  • 关联爆破-RSA分解
  • Netty内存管理--内存池PoolArena
  • RabbitMQ 发布订阅模式,routing路由模式,topic模式
  • 又一款可视化神器,开源了!
  • 干货 | 中科院心理所考研复试经验分享
  • Redis基础知识概述
  • 开心档之C++ 引用
  • 后台优化主要分为哪些?工作内容及流程是什么?
  • 二叉树及其遍历
  • java 版本企业电子招投标采购系统源码之登录页面
  • 第五章 使用RAID与LVM磁盘阵列技术
  • LeetCode 560. 和为 K 的子数组
  • 后端要一次性返回我10万条数据
  • 汽车智能化「出海」红利
  • Windows10资源管理器使用
  • 【视频教程解读】Window上安装和使用autogluon V0.7
  • 10、Java继承与多态 - 内部类的概念与分类 1
  • Java SE 面试题
  • Linux 之十九 编译工具链、.MAP 文件、.LST 文件
  • 小 C 的数学(math)
  • 应用运行环境实时洞察,亚马逊云科技Cisco AppDynamics展优势
  • C++程序设计——lambda表达式
  • Unity 高级程序员应该具备怎样的能力?要怎样成长为 Unity 高级程序员?
  • 禁止触摸屏触控板手指缩放,需要这样处理
  • opencv cuda版本windows编译