消除代码冗长神器 - Lombok | 入门

2024-01-08 20:57:23

👉 官网:https://projectlombok.org/

👉 最新版本:1.18.30(2023/09/20 发布,支持 JDK 21,jar 包 1.9MB)

Lombok 是一个 Java 实用工具,通过提供 Lombok 注解,来帮助开发人员消除冗长的代码,尤其是 POJO。

官方简介

官方介绍:Spice up your java: Automatic Resource Management, automatic generation of getters, setters, equals, hashCode and toString, and more!
中文翻译:给你的 java 加点料,比如自动化资源管理、自动生成常用方法(比如 setter/getter/equals/hashCode/toString 等)。

入门示例 - Hello World

下面,我们具体看个例子,就能体会到 **加点料 **是什么意思了。
🤷 典型场景:Java 中 POJO 中定义了很多属性,导致代码冗长。
示例代码如下:有好几个属性,代码不简洁,冗长,但又必须写

package com.ganlan.cloud.common;

public class User {
    private Long id;
    private String name;
    private String uid;
    private String email;
    private String deptName;
    private Integer age;
    private String comments;

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

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

    public String getUid() {
        return uid;
    }

    public void setUid(String uid) {
        this.uid = uid;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public String getDeptName() {
        return deptName;
    }

    public void setDeptName(String deptName) {
        this.deptName = deptName;
    }

    public Integer getAge() {
        return age;
    }

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

    public String getComments() {
        return comments;
    }

    public void setComments(String comments) {
        this.comments = comments;
    }
}

😎 Lombok 解决方案: 消除 Java 的冗长代码,使得代码更加简洁
使用 Lombok 注解后的例子:代码很短,且反编译后的代码就是我们想要的。

@Setter
@Getter
public class User {
    private Long id;
    private String name;
    private String uid;
    private String email;
    private String deptName;
    private Integer age;
    private String comments;
}

反编译后的代码:

public class User {
    private Long id;
    private String name;
    private String uid;
    private String email;
    private String deptName;
    private Integer age;
    private String comments;

    public User() {
    }

    public void setId(Long id) {
        this.id = id;
    }

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

    public void setUid(String uid) {
        this.uid = uid;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public void setDeptName(String deptName) {
        this.deptName = deptName;
    }

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

    public void setComments(String comments) {
        this.comments = comments;
    }

    public Long getId() {
        return this.id;
    }

    public String getName() {
        return this.name;
    }

    public String getUid() {
        return this.uid;
    }

    public String getEmail() {
        return this.email;
    }

    public String getDeptName() {
        return this.deptName;
    }

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

    public String getComments() {
        return this.comments;
    }
}

至此,Lombok 入门啦!

要不要用 Lombok?由你决定

?? 优势:
1、帮助开发人员消除 Java 冗长代码,尤其是 POJO
2、使用简单,上手迅速,支持很多构建工具和 IDE

? 缺点:
1、代码可调试性低:没法打断点,没法查看谁调用了这些生成的方法。
2、强迫队友使用 Lombok:队友如果不安装 Lombok,就会编译报错。
3、JDK 升级可能导致 Lombok 不可用:如果 JDK 升级后有问题,如果 Lombok 不可用,就比较麻烦了。
4、开发滥用 Lombok:如果不理解 Lombok 注解的作用,开发容易滥用,然后挖坑填自己,埋队友。

🚀 建议:权衡利弊,利大于弊则用之。

  • 如果代码中有大量 POJO,则可考虑用之
  • 万一使用出现问题,也可以使用 Lombok 插件去除 Lombok

文章来源:https://blog.csdn.net/u012383839/article/details/135464471
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。