Lombok是否存在可指定参数生成自定义构造方法的注解
Lombok自定义属性构造方案说明
基础问题解答
Lombok原生没有提供任意选择指定属性生成构造方法的注解,目前官方内置的构造相关注解仅3种:
@NoArgsConstructor:生成无参构造方法@RequiredArgsConstructor:生成包含所有@NonNull修饰的非空属性、以及未赋初始值的final属性的构造方法@AllArgsConstructor:生成包含类全部属性的构造方法
自定义多组参数构造的实现方案
首先需要注意:你需求中提到的两组构造参数(String age, String D)和(String age, String F)的方法签名完全相同,Java语法本身不允许重载签名相同的构造方法,因此你无法直接通过两个构造方法实现该需求,推荐用以下两种方式落地:
方式一:手写静态工厂方法(最直接)
你可以配合Lombok生成的基础构造,手写自定义静态工厂方法实现需求,Lombok不会覆盖你手动编写的方法,示例代码如下:
import lombok.AccessLevel; import lombok.AllArgsConstructor; import lombok.NoArgsConstructor; // 按需保留Lombok生成的通用构造 @NoArgsConstructor @AllArgsConstructor(access = AccessLevel.PRIVATE) public class User { private String age; private String D; private String F; // 其余属性省略 // 静态工厂方法1:按age和D创建对象 public static User createByAgeAndD(String age, String D) { User user = new User(); user.age = age; user.D = D; return user; } // 静态工厂方法2:按age和F创建对象 public static User createByAgeAndF(String age, String F) { User user = new User(); user.age = age; user.F = F; return user; } }
方式二:基于@Builder封装创建逻辑
如果后续还有其他自定义属性组合的创建需求,可以用@Builder注解简化赋值逻辑,封装对应创建方法即可。
内容的提问来源于stack exchange,提问作者Compte Gmail
相关产品推荐
相关产品推荐

