如何简化你的java代码?lombok使用介绍!

猿友 2021-07-07 14:36:46 浏览数 (2398)
反馈

很多小伙伴在学习 javabean 的时候,会发现在开发 Javabean 类的过程中,很大部分是在做变量的​getter/setter​。这样重复的工作是繁琐且低效的,而且要维护的时候往往难以阅读,当属性多时这样的情况尤为明显。那么有没有办法,自动生成这样的方法呢?有!那就是今天小编要提到的 lombok。通过引入 lombok,使用 lombok 的注解,可以完全免去写这些重复代码的烦恼。接下来就跟随小编一起学习 lombok 吧!

原理

lombok 可以通过注解的方式,在编译的时候为属性生成构造器、​getter​/​setter​、​equals​、​hashcode​、​toString​方法。这样我们就不用再手动去写这些方法了。

引用

lombok 的使用需要引用 jar 包,可以在官网下载,也可以使用 maven 添加对应依赖。

官网链接:https://projectlombok.org/download

maven 依赖:

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

使用

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

public class DataExample {
  private final String name;
  private int age;
  private double score;
  private String[] tags;
  
  public DataExample(String name) {this.name = name;}

  public String getName() {return this.name;}
  public void setAge(int age) {this.age = age;}
  public int getAge() {return this.age;}
  public void setScore(double score) {this.score = score;}
  public double getScore() {return this.score;}
  public String[] getTags() {return this.tags;}
  public void setTags(String[] tags) {this.tags = tags;}
}

上面的代码是一个简单的 pojo 类,当我们使用 lombok 之后:

import lombok.AllArgsConstructor;import lombok.Data;import lombok.EqualsAndHashCode;import lombok.NoArgsConstructor;import lombok.ToString;
@Data
public class DataExample {
  private final String name;
  private int age;
  private double score;
  private String[] tags;
}

有没有发现?代码量瞬间减少了一半?其实使用​@Data​生成的代码远不止这些,他还生成了​equals​、​canEqual​、​hashCode​、​toString​的方法,在 IDE 中可以尝试调用一下就能发现了。

@Data​注解的目标是生成全部需要自动生成的代码,但是有时候我们并不需要完全自动生成,这时候就可以使用单个的修饰符来注解了。

@Data集合了​@ToString​、​@EqualsAndHashCode​、​@Getter/@Setter​、​@RequiredArgsConstructor​的所有特性。换言之,这些注解也可以单个使用,接下来以​@Getter​/​@Setter​为例来介绍一下上面代码可以化简成什么样子。

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.ToString;

public class DataExample {
    @Getter
    private final String name;

    @Getter @Setter

    private int age;     @Getter @Setter   private double score;     @Getter @Setter        private String[] tags; }

小结

通过使用 lombok 注解,可以大大简化 java 代码,提高 java 开发效率。但是,lombok 也有很多缺点,他不支持多种参数构造器的重载;而且代码使用 lombok 后隐去了很多方法,这样不利于源代码的完整性和可读性,降低了阅读源代码的舒适度。此外,lombok 的使用上还需要 IDE 支持,所以他本质上更类似于一种 IDE 插件。

总之,仁者见仁智者见智,喜欢 lombok 的就多多使用,不喜欢的也可以使用编译器提供的快捷键协助生成 getter/setter 方法。

更多精彩内容关注W3C技术头条


0 人点赞