使用lombok简化你的代码

本文介绍Lombok库如何简化Java实体类的开发,通过注解自动生成getter、setter等方法,减少冗余代码,提高开发效率。文章涵盖Lombok的常见注解,如@Data、@Getter/@Setter等,以及在IDEA中的配置和使用示例。

1. 简介

我们在java开发中经常要用实体类bean,需要花时间去添加相应的getter/setter,也许还要去写构造器、equals和ToString等方法,虽然编译器(IntelliJ IDEA快捷键位shift+insert)能够使用快捷键快速加入相应函数。但是加入函数以后bean多了很多类似方法,显得很冗长;一旦修改bean的属性以后,又要重新生成这些getter/setter方法,有时候也出现忘记修改的失误。

因此我们使用lombok简化bean结构,使得代码更加简单和清晰。

Lombok官方解释为:Project Lombok makes java a spicier language by adding 'handlers' that know how to build and compile simple, boilerplate-free, not-quite-java code.

lombok通过注解实现自动引入,下面介绍常用的几个注解:

  • @Data
    @Data注解在类上,会为类的所有属性自动生成setter/getter、equals、canEqual、hashCode、toString方法,如为final属性,则不会为该属性生成setter方法。

  • @Getter/@Setter
    自动生成Getter/Setter函数

  • @EqualsAndHashCode

  • @NoArgsConstructor, @RequiredArgsConstructor and @AllArgsConstructor
    无参构造器、部分参数构造器、全参构造器。Lombok没法实现多种参数构造器的重载。

2. 使用

2.1 引入maven依赖
<!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.18.6</version>
    <scope>provided</scope>
</dependency>
2.2 idea安装lombok插件

在这里插入图片描述并设置 Setting -> Compiler -> Annotation Processors -> Enable annotation processing勾选。
在这里插入图片描述

2.3 示例代码

(1)示例bean

import lombok.AllArgsConstructor;
import lombok.Data;

@Data
@AllArgsConstructor
public class LombokBean {
    private int id;
    private String name;
}

(2)使用测试

import org.junit.Assert;
import org.junit.Test;

public class TestLombokBean {
    @Test
    public void Test_GetBeanUserParam(){
        //输入
        int id = 10;
        String name = "myLombok";
        LombokBean lombokBean = new LombokBean(id, name);
        //预期
        String expect = "myLombok";
        //实际
        String actual = lombokBean.getName();
        Assert.assertEquals(expect,actual);
    }
}

(3)验证

将java文件编译成class文件

javac LombokBean.java -cp lombok-1.18.6.jar

然后进行反编译,可得

public class LombokBean {
    private int id;
    private String name;

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

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

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

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

    public boolean equals(Object paramObject) {
        if (paramObject == this) return true;
        if (!(paramObject instanceof LombokBean)) return false;
        LombokBean localLombokBean = (LombokBean) paramObject;
        if (!localLombokBean.canEqual(this)) return false;
        if (getId() != localLombokBean.getId()) return false;
        String str1 = getName();
        String str2 = localLombokBean.getName();
        return str1 == null ? str2 == null : str1.equals(str2);
    }

    protected boolean canEqual(Object paramObject) {
        return paramObject instanceof LombokBean;
    }

    public int hashCode() {
        int i = 1;
        i = i * 59 + getId();
        String str = getName();
        return i * 59 + (str == null ? 43 : str.hashCode());
    }

    public String toString() {
        return "LombokBean(id=" + getId() + ", name=" + getName() + ")";
    }

    public LombokBean(int paramInt, String paramString) {
        this.id = paramInt;
        this.name = paramString;
    }
}

可以得出,确实自动加了相关函数。

3 总结

本文简单介绍了使用lombok简化java中实体类的代码,由于目前以前不使用lombok,因此没有使用工作中的实际代码。

除了引入依赖,和idea中安装插件稍微有点麻烦以外,lombok在实际使用中可能会有其他坑,边用边完善。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值