J'ai récemment commencé à lire Effective Java de Joshua Bloch. J'ai trouvé l'idée du pattern Builder [Item 2 dans le livre] vraiment intéressante. J'ai essayé de l'implémenter dans mon projet mais il y avait des erreurs de compilation. Voici en essence ce que j'essayais de faire :
La classe avec plusieurs attributs et sa classe builder :
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;
}
}
Classe où j'essaie d'utiliser la classe ci-dessus :
public class Main {
public static void main(String args[]) {
NutritionalFacts n =
new NutritionalFacts.Builder(10).carbo(23).fat(1).build();
}
}
Je reçois l'erreur de compilation suivante :
an enclosing instance that contains effectivejava.BuilderPattern.NutritionalFacts.Builder is required NutritionalFacts n = new NutritionalFacts.Builder(10).carbo(23).fat(1).build();
Je ne comprends pas ce que le message signifie. Veuillez expliquer. Le code ci-dessus est similaire à l'exemple suggéré par Bloch dans son livre.
1 votes
Possible duplicate de Une instance englobante contenant est requise