@Builder与@NoArgsConstructor | Lombok
Builder Lombok
2023-09-14 08:57:35 时间
一、@Builder与@NoArgsConstructor一起使用存在的问题
1 @Data 2 @Builder 3 @NoArgsConstructor 4 public class User { 5 private Long skuId; 6 }
编译上述代码为抛出如下异常:
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile (default-compile) on project java_base: Compilation failure [ERROR] /Users/zhangboqing/Software/MyGithub/java_knowledge_sea/java_base/src/main/java/com/zbq/devPlugin/lombok/bean/User.java:[12,1] 无法将类 com.zbq.devPlugin.lombok.bean.User中的构造器 User应用到给定类型; [ERROR] 需要: 没有参数 [ERROR] 找到: java.lang.Long,java.lang.String,boolean,java.lang.Boolean,int [ERROR] 原因: 实际参数列表和形式参数列表长度不同
二、原因分析
当java bean 中使用@Builder的时,无法添加无参构造器。我觉得可能的原因是,既然使用@Builder了,创建对象,可以通过builder去创建,而不需要new对象,为了防止new 对象而禁止无参构造器的存在(嘻嘻,这只是我的猜测哈)
三、如何解决
1.去掉无参构造器
这样就可以编译通过了
2.既然只是编译阶段有问题,那么我们可以通过@Tolerate 注解,让编译器不编译该方法就可以了
1 @Data 2 @Builder 3 public class User { 4 @Tolerate 5 public User() { 6 } 7 8 private Long skuId; 9 }
相关文章
- Adobe Flash builder破解方法
- 原生对话框【Dialog】AlertDialog和.Builder
- [Spring Pattern] Builder pattern
- 【java设计模式】之 建造者(Builder)模式
- Document Builder: how does document element and variable cooperate
- Document Builder: REMOVE_CC_DEFAULT_TEXTS
- Document builder customizing
- Document Builder: How to find all variables with given type
- Document Builder: How does a rule affect the display of one element
- SAP Document Builder: LCL_ELEMENT_COUNTER
- SAP Gateway Service Builder 里的 OData 服务实现方式
- Futter基础第6篇: 实现网格布局【GridView、GridView.count、GridView.builder】
- Java的二十三种设计模式(建造者模式(Builder))
- chromium的设计模式之 builder pattern 构建模式