【发布时间】:2019-11-23 04:57:49
【问题描述】:
我想从包含 Builder 类的父类继承一个类,但在父类中给出编译错误“默认构造函数不可用”。
我尝试为具有空值的父类构建默认构造函数。然而根本没有调用默认构造函数,它将所有值初始化为 null。
- Product.java
包装产品; 公共类产品{
private final String id; //required
private final String description; //required
private final double price; //required
public enum Category{
Electronics,
Clothing,
ShowCart
}
private Products(ProductBuilder builder) {
this.id = builder.id;
this.description = builder.description;
this.price = builder.price;
}
public String getID() {
return id;
}
public String getDescription() {
return description;
}
public double getPrice() {
return price;
}
public static class ProductBuilder {
private final String id; //required
private final String description; //required
private final double price; //required
public ProductBuilder(String id, String description, double price)
{
this.id = id;
this.description = description;
this.price = price;
}
public Products build(){
Products prod = new Products(this);
return prod;
}
}
}
- Electronic.java
包装产品;
public class Electronic extends Products{ //编译错误
//DEFAULT CONSTRUCTOR NOT AVAILABLE
}
我想在不引入默认构造函数的情况下解决问题,并且不违反 BUILDER PATTERN
【问题讨论】:
-
您愿意使用 Lombok 吗? projectlombok.org/features/Builder。这不能回答您的问题,但应该可以解决您的问题。
标签: inheritance default-constructor builder-pattern