我最近开始阅读 Joshua Bloch 的有效 Java。我发现 Builder 模式[书中的第2项]的想法非常有趣。我试图在我的项目中实现它,但是出现了编译错误。以下就是我试图做的事情:
具有多个属性的类及其生成器类:
public class NutritionalFacts {
private int sodium;
private int fat;
private int carbo;
public class Builder {
private int sodium;
private int fat;
private int carbo;
public Builder(int s) {
this.sodium = s;
}
public Builder fat(int f) {
this.fat = f;
return this;
}
public Builder carbo(int c) {
this.carbo = c;
return this;
}
public NutritionalFacts build() {
return new NutritionalFacts(this);
}
}
private NutritionalFacts(Builder b) {
this.sodium = b.sodium;
this.fat = b.fat;
this.carbo = b.carbo;
}
}
尝试使用上面的类的类:
public class Main {
public static void main(String args[]) {
NutritionalFacts n =
new NutritionalFacts.Builder(10).carbo(23).fat(1).build();
}
}
我得到以下编译器错误:
包含 有效的爪哇。建设者模式。营养事实。建设者 是必须的 新的营养知识 营养事实。建造者(10)。碳水化合物(23)。脂肪(1)。建造() ;
我不明白这信息是什么意思。请解释一下。上面的代码类似于 Bloch 在他的书中提出的例子。