Lombok可以通过注解的方式,在编译时自动生成 getter、setter、构造函数、toString 等样板代码,从而减少代码的冗余,提高开发效率。本文深入讲解Lombok在实际开发中的使用。
本文目录
1. Lombok 依赖添加
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.26</version>
<scope>provided</scope>
</dependency>
2. 常用Lombok注解及使用场景
2.1 @Getter 和 @Setter
自动生成类中所有属性的 getter 和 setter 方法。可以用在类上,为所有属性生成;也可以用在单个属性上,只为该属性生成。
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
public class Product {
private String productId;
private String productName;
private double price;
private int stock;
}
2.2 @ToString
自动生成类的 toString
方法,方便打印对象的信息。可以通过 exclude
属性排除某些不需要显示的属性,通过 includeFieldNames
属性控制是否显示属性名。
import lombok.ToString;
@ToString(exclude = "orderDetails")
public class Order {
private String orderId;
private String customerId;
private java.util.List<OrderDetail> orderDetails;
}
2.3 @EqualsAndHashCode
自动生成类的 equals
和 hashCode
方法。可以通过 exclude
属性排除某些不需要参与比较的属性。
import lombok.EqualsAndHashCode;
@EqualsAndHashCode(exclude = "password")
public class User {
private String userId;
private String username;
private String password;
}
2.4 @NoArgsConstructor、@RequiredArgsConstructor和 @AllArgsConstructor
- @NoArgsConstructor:生成无参构造函数。
- @RequiredArgsConstructor :为类中所有被
final
修饰的属性和被@NonNull
注解的属性生成构造函数。 - @AllArgsConstructor:生成包含所有属性的构造函数。
import lombok.AllArgsConstructor;
import lombok.NoArgsConstructor;
import lombok.RequiredArgsConstructor;
@NoArgsConstructor
@RequiredArgsConstructor
@AllArgsConstructor
public class ProductCategory {
private String categoryId;
private final String categoryName;
private String description;
}
2.5 @Data
是 @Getter
、@Setter
、@ToString
、@EqualsAndHashCode
和 @RequiredArgsConstructor
的组合注解,一次性为类生成常用的方法。
import lombok.Data;
@Data
public class CartItem {
private String cartItemId;
private String productId;
private int quantity;
}
2.6 @Builder
为类生成建造者模式的代码,通过链式调用的方式方便地创建对象。
import lombok.Builder;
// 优惠券实体类
@Builder
public class Coupon {
private String couponId;
private String couponName;
private double discount;
private java.util.Date expirationDate;
}
// 使用建造者模式创建对象
Coupon coupon = Coupon.builder()
.couponId("123")
.couponName("满减优惠券")
.discount(10.0)
.expirationDate(new java.util.Date())
.build();
← 上一篇 Java进阶——常用类及常用方法详解 |
记得点赞、关注、收藏哦!
|
下一篇 Java进阶——数组超详细整理 → |