我有一个名为 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) 不适用 (实际参数列表和正式参数列表的长度不同
您还需要用
Apartment
注释
@SuperBuilder
,不能用 @Builder
注释。
@SuperBuilder 注释为您的类生成复杂的构建器 API。与 @Builder 相比,@SuperBuilder 也适用于超类中的字段。但是,它仅适用于类型。最重要的是,它要求所有超类也有 @SuperBuilder 注解。
此外,当您使用
@Getter
时,无需显式添加 @Setter
和
@Data
。
@Data 是一个方便的快捷注解,它将 @ToString、@EqualsAndHashCode、@Getter / @Setter 和 @RequiredArgsConstructor 的功能捆绑在一起