带有抽象类的Spring Boot Builder

问题描述 投票:0回答:1

我有一个名为 Property 的类,它是一个抽象类,具有以下属性:

@SuperBuilder
@Setter
@Getter
public abstract class Property {

    private String id;

    private String address; //TODO -> Create Value Object

    private String description;

    private Float squareFootage;

    private Integer bedrooms;

    private Year yearBuilt;

    private Integer bathrooms;

    private Heating heatingType;
}

我还有两个类别,称为“公寓”和“房屋”,它们扩展了该属性类别

@EqualsAndHashCode(callSuper = true)
@Builder
@Getter
@Setter
@Data
public class Apartment extends Property {

    private Long houseId;

    private Integer floor;

}

我收到错误错误:没有为属性找到合适的构造函数(无参数) @Builder错误:没有找到适合Property的构造函数(无参数)

我确实明白你无法实例化抽象类,我为抽象类提供了一个构造函数,以便子类可以将其用作 super() ,但出现以下错误 错误:找不到适合 Property 的构造函数(无参数) @Builder ^ 构造函数 Property.Property(String,String,String,Float,Integer,Year,Integer,Heating,EnergySource,FlooringType,List,List,double,double) 不适用 (实际参数列表和正式参数列表的长度不同) 构造函数 Property.Property(PropertyBuilder) 不适用 (实际参数列表和正式参数列表的长度不同

java spring-boot oop abstract-class builder
1个回答
0
投票

您还需要用

Apartment
 注释 
@SuperBuilder
不能用 @Builder
 注释

@SuperBuilder 注释为您的类生成复杂的构建器 API。与 @Builder 相比,@SuperBuilder 也适用于超类中的字段。但是,它仅适用于类型。最重要的是,它要求所有超类也有 @SuperBuilder 注解。

此外,当您使用

@Getter
 时,无需显式添加 @Setter
@Data

@Data 是一个方便的快捷注解,它将 @ToString、@EqualsAndHashCode、@Getter / @Setter 和 @RequiredArgsConstructor 的功能捆绑在一起

© www.soinside.com 2019 - 2024. All rights reserved.