Lombok是⼀个Java⼯具库,通过添加注解的⽅式,简化Java的开发
可以在IDEA中引入Lombok依赖
java
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
lombok通过⼀些注解的⽅式, 可以帮助我们消除⼀些冗⻓代码, 使代码看起来简洁⼀些,比如一个 User 类,
java
@Data
public class User {
private Long id;
private String name;
private int age;
}
添加 @Data 后的 Idea反编译的class⽂件如下,
java
public class User {
private Long id;
private String name;
private int age;
public User() {}
public User(Long id, String name, int age) {
this.id = id;
this.name = name;
this.age = age;
}
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 int getAge() { return age; }
public void setAge(int age) { this.age = age; }
@Override
public String toString() {
return "User{id=" + id + ", name='" + name + "', age=" + age + "}";
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
User user = (User) o;
return age == user.age && Objects.equals(id, user.id) && Objects.equals(name, user.name);
}
@Override
public int hashCode() {
return Objects.hash(id, name, age);
}
}
使用@Data注解,编译后,生成的 .class 文件里会包含 getter/setter、toString、equals、hashCode 等方法。
lombok也提供了⼀些更精细粒度的注解,具体如下
| 注解 | 作用 |
|---|---|
| @Getter | 自动添加getter 方法 |
| @Setter | 自动添加 setter 方法 |
| @ToString | 自动添加 toString方法 |
| @EqualsAndHashCode | 自动添加equals 和 hashCode方法 |
| @NoArgsConstructor | 自动添加无参构造方法 |
| @AllArgsConstructor | 自动添加全属性构造方法,顺序按照属性的定义顺序 |
| @NonNull | 属性不能为 null |
| @RequiredArgsConstructor | 自动添加必需属性的构造方法,final+@NonNull的属性为必需 |
@Data = @Getter + @Setter + @ToString + @EqualsAndHashCode + @RequiredArgsConstructor + @NoArgsConstructor