Lombok可以通过注解的方式,在编译时自动生成 getter、setter、构造函数、toString 等样板代码,从而减少代码的冗余,提高开发效率。本文深入讲解Lombok在实际开发中的使用。
本文目录
- 1. Lombok 依赖添加
- 2. 常用Lombok注解及使用场景
- 2.1 @Getter 和 @Setter
- 2.2 @ToString
- 2.3 @EqualsAndHashCode
- 2.4 @NoArgsConstructor、@RequiredArgsConstructor和 @AllArgsConstructor
- 2.5 @Data
- 2.6 @Builder
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进阶——数组超详细整理 → |