推荐一款代码神器,代码量至少省一半!

简介: 在我们 Java 项目里面,有很多 Java Bean 需要为每个属性生成 get/ set 方法,增删改属性都需要维护这些 get/ set 方法甚是麻烦。今天给大家介绍一款能帮助我们简化这些代码的神器:Lombok!有了这个神器,你的 Java Bean 类的代码量至少可以省一半。

在我们 Java 项目里面,有很多 Java Bean 需要为每个属性生成 get/ set 方法,增删改属性都需要维护这些 get/ set 方法甚是麻烦。


今天给大家介绍一款能帮助我们简化这些代码的神器:Lombok!有了这个神器,你的 Java Bean 类的代码量至少可以省一半。


什么是Lombok?

https://www.projectlombok.org/


打开它的官网,这是它的简介。


Project Lombok is a java library that automatically plugs into your editor and build tools, spicing up your java.

Never write another getter or equals method again. Early access to future java features such as val, and much more.


翻译过来就是说,Lombok项目是一个 Java 库,它能够自动嵌入到你的 IDE 编辑器和编译工具中。有了它,你再也不用写 getter 或者 equals 方法了,还有 val 特性等。


总之,有了这个家伙,可以省掉很多代码的编写,大大减少了工作量和维护的难度。


如何使用Lombok?

1、安装插件和配置依赖

image.png


如上图所示,Lombok支持所有主流的 IDE 开发工具及编译构建工具。


在 IDEA 中安装 Lombok 插件,这样在使用 Lombok 的时候就不会编译报错。


image.png


下面是 Maven 的依赖配置,在用 Maven 打包的时候也能自动生成需要的代码。

<dependency>
  <groupId>org.projectlombok</groupId>
  <artifactId>lombok</artifactId>
  <version>1.18.2</version>
  <scope>provided</scope>
</dependency>

如果你使用了 Spring Boot,可以不用带版本号,在 Spring Boot spring-boot-dependencies.pom 这个配置文件里面定义了 Lombok 依赖。image.png所以,你只需要继承版本号即可,当然,有必要的话,你也可以自定义版本号。

<dependency>
  <groupId>org.projectlombok</groupId>
  <artifactId>lombok</artifactId>
  <scope>provided</scope>
</dependency>

2、使用注解简化代码

从 IDEA 中的 Lombok 插件特性可以看到支持的注解。

Features
@Getter and @Setter
@FieldNameConstants
@ToString
@EqualsAndHashCode
@AllArgsConstructor, @RequiredArgsConstructor and @NoArgsConstructor
@Log, @Log4j, @Log4j2, @Slf4j, @XSlf4j, @CommonsLog, @JBossLog, @Flogger
@Data
@Builder
@Singular
@Delegate
@Value
@Accessors
@Wither
@SneakyThrows
from Intellij 14.1 @val
from Intellij 15.0.2 @var
from Intellij 14.1 @var
from Intellij 2016.2 @UtilityClass
Lombok config system
Code inspections
Refactoring actions (lombok and delombok)

也可以去 Lombok 对应的包里面看所有支持的注解。

现在挑几个讲一下它们的用法吧!

@Getter 和 @Setter

@Getter
@Setter
public class User {
  private String name;
  private int age;
  ...
  // 无需生成 get/set 方法
}

添加 @Getter@Setter 注解用在 Java Bean 类上面,无需生成 get/ set 方法,会自动生成所有的 get/ set 方法及一个默认的构造方法。

也可以用插件来添加相应的注解。

image.png

来看下源码和生成后的代码对比。

image.png@Getter@Setter 注解也可以单独使用在字段上面,同样也会生成对应的 get/ set 方法及一个默认的构造方法。

@ToString

使用在类上,默认生成所有非静态字段以下面的格式输出,如:

public String toString(){
    return "Person(userName=" + getUserName() + ", id=" + getId() + ", age=" + getAge() + ", address=" + getAddress() + ", memo=" + getMemo() + ")";
}

里面也有很多参数,用来自定义输出格式。


@NoArgsConstructor


用在类上,用来生成一个默认的无参构造方法。


@RequiredArgsConstructor


用在类上,使用类中所有带有 @NonNull 注解和 final 类型的字段生成对应的构造方法。


@AllArgsConstructor


用在类上,生成一个所有参数的构造方法,默认不提供无参构造方法。


@Data


用在类上,等同于下面这几个注解合集。


@Getter

@Setter

@RequiredArgsConstructor

@ToString

@EqualsAndHashCode

@Value


用在类上,等同于下面这几个注解合集。


@Getter

@FieldDefaults(makeFinal=true, level=AccessLevel.PRIVATE)

@AllArgsConstructor

@ToString @EqualsAndHashCode}

@NonNull


用在属性上,用于字段的非空检查,如果传入到 set 方法中的值为空,则抛出空指针异常,该注解也会生成一个默认的构造方法。


还有很多,这里不再撰述。


总结

本文介绍了 Lombok 及使用说明,更多的注解使用方式可以去源码里面看吧,有了这个插件,可以帮助你写出更简洁、更优雅、更漂亮的 Java 代码。


相关文章
|
Oracle Java 关系型数据库
使用了这个神器,让我的代码bug少了一半(下)
使用了这个神器,让我的代码bug少了一半(下)
使用了这个神器,让我的代码bug少了一半(下)
|
6月前
|
消息中间件 前端开发 关系型数据库
🤔️测试问我:为啥阅读量计数这么简单的功能你都能写出bug?
🤔️测试问我:为啥阅读量计数这么简单的功能你都能写出bug?
|
安全 Windows
这5款软件虽然知名度不高,但不代表不好用
其实有许多工具,知名度不高,用的人也很少,不过并不代表它们不好用,小编励志做一个合格的搬运工,让大家都能用上好用的软件。
113 1
|
缓存 监控 Kubernetes
包体积优化 · 实战论 · 怎么做包体积优化? 做好能晋升吗? 能涨多少钱?
包体积优化 · 实战论 · 怎么做包体积优化? 做好能晋升吗? 能涨多少钱?
433 0
包体积优化 · 实战论 · 怎么做包体积优化? 做好能晋升吗? 能涨多少钱?
|
人工智能 算法
靠这个信息差,我省了至少上千块!
靠这个信息差,我省了至少上千块!
193 0
靠这个信息差,我省了至少上千块!
|
搜索推荐 5G 数据安全/隐私保护
想要网站流量好,这一步不可少
想要网站流量好,这一步不可少
213 0
想要网站流量好,这一步不可少
BeyondCompare4无限使用办法
BeyondCompare4无限使用办法
201 0
BeyondCompare4无限使用办法
|
安全 Java 测试技术
使用了这个神器,让我的代码bug少了一半(上)
使用了这个神器,让我的代码bug少了一半
使用了这个神器,让我的代码bug少了一半(上)
L1-5 VV的烦恼 (15 分)
VV今天去图书馆学习,发现电脑没充满电,电量只剩下n,而她有m1个低计算量程序需要运行,m2个高计算量程序需要运行 现假设电脑在运行低计算量程序的情况下消耗电量p1每分钟,运行高计算量程序的情况下消耗电量p2每分钟,运行不同程序之间没有时间间隔。 请问VV能把所有程序运行完吗?
129 0
【每日SQL打卡】​​​​​​​​​​​​​​​DAY 27丨每次访问的交易次数【难度困难-提前放出来】​
【每日SQL打卡】​​​​​​​​​​​​​​​DAY 27丨每次访问的交易次数【难度困难-提前放出来】​