Ich habe kürzlich begonnen, Effective Java von Joshua Bloch zu lesen. Ich fand die Idee des Builder-Musters [Punkt 2 im Buch] wirklich interessant. Ich habe versucht, es in meinem Projekt zu implementieren, aber es gab Kompilierungsfehler. Folgendes habe ich im Wesentlichen versucht:
Die Klasse mit mehreren Attributen und ihre Builder-Klasse:
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;
}
}
Klasse, in der ich versuche, die obige Klasse zu verwenden:
public class Main {
public static void main(String args[]) {
NutritionalFacts n =
new NutritionalFacts.Builder(10).carbo(23).fat(1).build();
}
}
Ich erhalte den folgenden Compilerfehler:
Eine einschließende Instanz, die effektivjava.BuilderPattern.NutritionalFacts.Builder enthält, ist erforderlich. NutritionalFacts n = new NutritionalFacts.Builder (10) .carbo (23) .fat (1) .build ();
Ich verstehe nicht, was die Nachricht bedeutet. Bitte erkläre. Der obige Code ähnelt dem von Bloch in seinem Buch vorgeschlagenen Beispiel.