ฉันเพิ่งเริ่มอ่าน Java ที่มีประสิทธิภาพโดย Joshua Bloch ฉันพบแนวคิดของรูปแบบของตัวสร้าง [รายการ 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.Nut โภชนาการFacts.Builderจำเป็นต้องใช้ NutritionFacts n = Nut NutFactsBuilder ใหม่ (10) .carbo (23) .Fat (1). build ();
ฉันไม่เข้าใจความหมายของข้อความ กรุณาอธิบาย. โค้ดด้านบนคล้ายกับตัวอย่างที่ Bloch แนะนำในหนังสือของเขา