查看和确认Lombok生成代码的四种方法

 更新时间:2025年09月14日 11:42:25   作者:六七_Shmily  
Lombok是一个Java库,用于减少Java中的样板代码(boilerplate code),由于 Lombok 是在编译阶段自动生成 getter、setter 等方法,所以在源代码(.java文件)中你是看不到这些方法的具体实现的,所以本文给大家介绍了查看和确认Lombok生成代码的四种方法

由于 Lombok 是在编译阶段自动生成 getter、setter 等方法,所以在源代码(.java文件)中你是看不到这些方法的具体实现的。

但是,有几种非常方便的方法可以查看和确认 Lombok 生成的方法:

方法一:使用 IDE 的结构视图(最推荐、最方便)

现代 Java IDE(如 IntelliJ IDEA 和 Eclipse)的 Lombok 插件可以智能地识别这些生成的方法,并在各种视图和代码补全中显示它们。

在 IntelliJ IDEA 中:

  1. 确保你已安装并启用了 Lombok Plugin(这是前提)。
  2. 打开你的 Java 类文件。
  3. 使用快捷键 Alt + 7(Windows/Linux)或 Cmd + 7(Mac)打开 Structure 工具窗口。
  4. 在这个视图中,你会清楚地看到所有 Lombok 生成的方法,它们前面会有一个特殊的图标(如 ☯ 或 ⚙️),并且通常会有 (Lombok) 的提示,与你自己手写的方法区分开。

你也可以将鼠标光标放在使用了 Lombok 注解的字段或类名上,IDE 会给出提示,显示将会生成哪些方法。

在 Eclipse 中:

  1. 确保安装了 Eclipse 的 Lombok 插件(通常通过将 lombok.jar 拖入 Eclipse 安装目录来完成)。
  2. 打开 Outline 视图(Window -> Show View -> Outline)。
  3. 在 Outline 视图中,你也可以看到所有生成的方法。

方法二:使用 IDE 的代码补全功能

即使在源代码中看不到,IDE 的代码补全(按 Ctrl + Space)也会正常工作。当你尝试调用一个对象的 setter 或 getter 方法时,补全列表里会出现 Lombok 生成的方法。

例如,你有一个 user 对象,输入 user.set 然后按 Ctrl + Space,你会看到所有可用的 setName(), setAge() 等方法。

方法三:反编译编译后的类文件(查看字节码的“真身”)

这是最“硬核”的方法,可以直接看到 Lombok 最终生成的代码。

  1. 首先编译你的项目。使用 Maven (mvn compile)、Gradle 或直接点击 IDE 的编译按钮。
  2. 找到编译生成的 .class 文件。它们通常位于 target/classes (Maven) 或 build/classes (Gradle) 目录下。
  3. 使用 JD-GUICFR 或其他 Java 反编译工具打开对应的 .class 文件。

反编译后,你就能看到完整的类定义,其中包含了所有 Lombok 生成的 getter 和 setter 方法的具体实现,就像是你自己手写的一样。

示例:

你的源代码:

import lombok.Data;

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

使用 JD-GUI 反编译后的 User.class 可能会显示为:

public class User {
    private String name;
    private int age;

    // 以下是 Lombok 生成的
    public String getName() {
        return this.name;
    }

    public int getAge() {
        return this.age;
    }

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

    public void setAge(int age) {
        this.age = age;
    }

    // 还有 equals, hashCode, toString 方法...
}

方法四:通过反射查看(程序运行时)

你可以在运行时写一段简单的反射代码,来列出类中的所有方法,这也会包括 Lombok 生成的方法。

import java.lang.reflect.Method;

public class CheckLombokMethods {
    public static void main(String[] args) {
        // 获取 User 类的所有方法
        Method[] methods = User.class.getDeclaredMethods();
        
        // 遍历并打印方法名
        for (Method method : methods) {
            System.out.println("Method: " + method.getName());
        }
    }
}

运行这段代码,输出结果会包含 getName, setName, getAge, setAge 等。

总结与建议

方法优点缺点适用场景
IDE 结构视图最快、最直观,无需任何额外操作需要安装 IDE 插件日常开发中最推荐使用
代码补全自然融入开发流程,无需特意查看无法一次看到所有方法在编码时顺便确认
反编译能看到最真实、最终的字节码内容步骤稍多,需要额外工具深度调试,确认 Lombok 是否生效,或学习其实现
反射以编程方式验证运行时的类结构需要编写额外代码程序运行时动态分析

给你的建议:

对于日常开发,强烈推荐使用方法一(IDE 的结构视图)。它完美集成了开发环境,让你像使用普通方法一样方便地查看和使用 Lombok 生成的方法,这是 Lombok 设计的初衷——保持代码简洁的同时又不失开发便利性。

到此这篇关于查看和确认Lombok生成代码的四种方法的文章就介绍到这了,更多相关查看Lombok生成代码内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Java中Cglib代理类重写逻辑详解

    Java中Cglib代理类重写逻辑详解

    这篇文章主要介绍了Java中Cglib代理类重写逻辑详解,代理类中只会维护NoOp这个回调属性,并不会生成目标类MyService中的noOp所对应的方法,需要的朋友可以参考下
    2023-11-11
  • Eclipse安装Free marker插件教程

    Eclipse安装Free marker插件教程

    这篇文章主要为大家详细介绍了Eclipse安装Free marker插件教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-11-11
  • Java中的原生post请求方式

    Java中的原生post请求方式

    这篇文章主要介绍了Java中的原生post请求方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-10-10
  • Mybatis Log Plugin的使用方式

    Mybatis Log Plugin的使用方式

    这篇文章主要介绍了Mybatis Log Plugin的使用方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-02-02
  • java如何将pdf转换成image

    java如何将pdf转换成image

    这篇文章主要为大家详细介绍了java如何将pdf转换成image,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-05-05
  • java 百度手写文字识别接口配置代码

    java 百度手写文字识别接口配置代码

    本文通过实例代码给大家介绍了java 百度手写文字识别接口配置方法,代码简单易懂,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2022-01-01
  • spring项目实现单元测试过程解析

    spring项目实现单元测试过程解析

    这篇文章主要介绍了spring项目实现单元测试过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-10-10
  • Java webSerivce的使用看完你就明白了

    Java webSerivce的使用看完你就明白了

    因为前段时间,需要使用到webService来调用公司的其他系统api接口,但是请求方式和我熟知的http请求不一样,是基于soap协议来传输xml数据格式,请求的参数极其复杂,需要封装多层xml数据格式,并且我不知道对方的api接口是什么语言,甚至不知道他们存在于什么平台
    2022-03-03
  • Servlet3.0学习总结之基于Servlet3.0的文件上传实例

    Servlet3.0学习总结之基于Servlet3.0的文件上传实例

    本篇文章主要介绍了Servlet3.0学习总结之基于Servlet3.0的文件上传实例,具有一定的参考价值,有兴趣的可以了解一下
    2017-07-07
  • java中Map接口常用的方法解读

    java中Map接口常用的方法解读

    这篇文章主要介绍了java中Map接口常用的方法解读,Map接口是双列集合,它的每一个元素都包含一个键对象key和值对象Value,键和值对象之间存在一种对应关系,称为映射,需要的朋友可以参考下
    2024-01-01

最新评论