博客
关于我
lombok 的使用讲解
阅读量:792 次
发布时间:2023-02-06

本文共 3072 字,大约阅读时间需要 10 分钟。

Lombok - Java 开发工具简介与应用

Lombok 是一款为 Java 开发者设计的工具,旨在通过自动生成代码来简化开发流程。通过在代码中使用特定的注解,Lombok 可以自动为你生成 Getter、Setter、构造函数等常见代码,从而减少冗余代码的编写,提高开发效率。

Lombok 的基本知识

Lombok 的核心功能是通过注解自动生成代码。其主要注解包括:

  • @Getter 和 @Setter:用于自动生成字段的 Getter 和 Setter 方法。
  • @AllArgsConstructor:用于自动生成带有所有参数的构造函数。
  • @NoArgsConstructor:用于自动生成无参数构造函数。
  • @Data:包含了 @Getter、@Setter、@ToString、@EqualsAndHashCode 和 @AllArgsConstructor 的功能,适用于需要快速生成标准代码的场景。
  • @Log:用于日志记录,常见于 @Slf4j 注解。
  • @ToString:用于自动生成对象的 toString 方法。
  • @EqualsAndHashCode:用于自动生成 equals 和 hashCode 方法。
  • @NonNull:用于确保字段不为空,常用于参数验证。

Lombok 的优缺点分析

优点

  • 简化代码:减少手动编写冗余代码的工作量。
  • 提高效率:开发者可以专注于业务逻辑,减少重复性工作。
  • 代码可读性:自动生成的代码结构一致,易于理解。
  • 缺点

  • 隐藏细节:自动生成的代码可能会掩盖一些实现细节,导致对代码的理解有所困难。
  • 不适用场景:Lombok 适用于常见场景,但在复杂或特殊需求下,可能需要手动编写代码。
  • 工具依赖:需要在开发环境中安装 Lombok 插件或进行相关配置。
  • Lombok 的代码应用

    在 Maven 项目中使用 Lombok,需要在 pom.xml 中添加依赖:

    org.projectlombok
    lombok
    ${lombok.version}
    provided

    示例代码:

    import lombok.Getter;import lombok.Setter;@Getter@Setterprivate String name;

    等价于:

    private String name;public String getName() {    return name;}public void setName(String name) {    this.name = name;}

    常见注解示例

  • @AllArgsConstructor 和 @NoArgsConstructor
  • import lombok.AllArgsConstructor;import lombok.NoArgsConstructor;@AllArgsConstructor@NoArgsConstructorpublic class MyClass {    private String name;    private int age;}

    等价于:

    public class MyClass {    private String name;    private int age;    public MyClass(String name, int age) {        this.name = name;        this.age = age;    }    public MyClass() {    }}
    1. @Data 注解
    2. import lombok.Data;@Datapublic class MyClass {    private String name;    private int age;}

      等价于:

      public class MyClass {    private String name;    private int age;    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public int getAge() {        return age;    }    public void setAge(int age) {        this.age = age;    }    @Override    public boolean equals(Object obj) {        if (this == obj) return true;        if (obj == null || getClass() != obj.getClass()) return false;        MyClass other = (MyClass) obj;        return Objects.equals(name, other.name) && Objects.equals(age, other.age);    }    @Override    public int hashCode() {        return Objects.hash(name, age);    }    @Override    public String toString() {        return "MyClass{" + "name=" + name + ", age=" + age + '}';    }}
      1. @Log 和 @Slf4j
      2. import lombok.Log;import lombok.Slf4j;@Logpublic class LogExample {    @Slf4j    public void logMessage(String message) {        log.info(message);    }}

        其他常用注解

        • @Cleanup:用于自动化处理资源,类似于 try-with-resource。
        @Cleanup InputStream in = new FileInputStream("file.txt");@Cleanup OutputStream out = new FileOutputStream("file.txt");
        • @SneakyThrows:用于在方法上抛出异常,不需要显式声明。
        @SneakyThrows(Exception.class)public void method() {    // 代码可能抛出异常}
        • @Synchronized:用于同步方法,控制锁的对象。
        private final Object lock = new Object();@synchronized("lock")public void foo() {    // 代码块}

        Lombok 提供了丰富的注解选项,适用于不同场景的开发需求。通过合理使用这些注解,可以显著简化 Java 开发过程,提高开发效率。

    转载地址:http://mjufk.baihongyu.com/

    你可能感兴趣的文章
    Linux进程地址空间和虚拟内存
    查看>>
    Linux进程地址管理之mm_struct
    查看>>
    Linux进程堆栈状态分析实战
    查看>>
    Linux进程的实际用户ID和有效用户ID
    查看>>
    Linux进程管理实战指南:实用工具命令详解
    查看>>
    Linux进程间通信 - 共享内存
    查看>>
    Linux进程间通信——使用命名管道
    查看>>
    Linux进程间通信的秘密通道:IPC机制详解
    查看>>
    Linux远程连接wget、curl、scp命令详解
    查看>>
    linux递归参数-R(r)和-p的区别
    查看>>
    Linux通用应急响应脚本(非常详细)零基础入门到精通,收藏这一篇就够了
    查看>>
    Linux逻辑卷管理实战
    查看>>
    Linux部署Elasticsearch(一):下载和部署Elasticsearch
    查看>>
    Linux部署Elasticsearch(二):启动Elasticsearch不成功的几种原因
    查看>>
    Linux部署Oracle
    查看>>
    Linux部署Tomcat
    查看>>
    Linux部署Tomcat踩的坑以及解决方案【8080无法访问、日志显示XX端口被占用、修改默认端口、无法提供安全连接】
    查看>>
    Linux部署前后端分离项目(SpringBoot+Vue)【Nginx部署】
    查看>>
    linux部署安装SRS流媒体服务器教程
    查看>>
    Linux配置-【10】基础操作指令
    查看>>