java 如何在子类生成器中使用父类默认值

nqwrtyyt  于 2023-01-11  发布在  Java
关注(0)|答案(1)|浏览(165)

我有两门课:1]基本客户. java

@NoArgsConstructor
@AllArgsConstructor
@Getter
@Builder(builderMethodName="BaseBuilder")
public class BaseCusmtomer {
       private String cutomerId;
       private String age;
        @Default
       private Boolean isActive= true;
        @Default
       private String type = "XYZ";  
    }

2] Customer.java

@Builder
public class Customer extends BaseCustomer{
      private Customer(String cutomerId, String age, Boolean isActive, String type){
        super(customerId,age,isActive,type);
           }  
        }

3]测试对象

Customer.builder().cutomerId("1").age("23").build();

但是当使用客户生成器创建对象时,它总是取isActive的值,类型为null,它应该从超类中取默认值。有办法做到这一点吗?
尝试使用默认父类值调用子生成器,但获得空值而非默认值。
注意:不能使用Superbuilder,因为它是实验功能。

tyu7yeag

tyu7yeag1#

只需将@BuilderCustomer类中删除,并在BaseCustomer上使用@Builder即可:

@NoArgsConstructor
@AllArgsConstructor
@Getter
@Builder
public class BaseCustomer {
    private String customerId;
    private String age;
    @Default
    private Boolean isActive = true;
    @Default
    private String type = "XYZ";
}

public class Customer extends BaseCustomer {
}

注意:您不需要在Customer类上创建构造函数。

相关问题