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

扫码关注公众号:Java 技术驿站

发送:vip
将链接复制到本浏览器,永久解锁本站全部文章

【公众号:Java 技术驿站】 【加作者微信交流技术,拉技术群】
免费领取10G资料包与项目实战视频资料

在我们 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、安装插件和配置依赖

2019101310016\_1.png

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

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

2019101310016\_2.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 依赖。

2019101310016\_3.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 方法及一个默认的构造方法。

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

2019101310016\_4.png

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

2019101310016\_5.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 代码。


来源:https://cloud.tencent.com/developer/column/2205/tag-10712

赞(0) 打赏
版权归原创作者所有,任何形式的转载请联系博主:daming_90:Java 技术驿站 » 推荐一款代码神器,代码量至少省一半!

  • 暂无文章

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏