私は最近、Joshua BlochによるEffective 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();
}
}
次のコンパイラエラーが発生します。
effectivejava.BuilderPattern.NutritionalFacts.Builderを含む囲みインスタンスが必要ですNutritionalFacts n = new NutritionalFacts.Builder(10).carbo(23).fat(1).build();
メッセージの意味がわかりません。説明してください。上記のコードは、ブロッホが彼の本で提案した例に似ています。