Recientemente comencé a leer Java efectivo por Joshua Bloch. Encontré la idea del patrón Builder [Artículo 2 en el libro] realmente interesante. Traté de implementarlo en mi proyecto, pero hubo errores de compilación. A continuación se presenta, en esencia, lo que estaba tratando de hacer:Patrón de generador en Java efectivo
La clase con múltiples atributos y su clase constructor:
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;
}
}
Clase donde trato de usar la clase anterior:
public class Main {
public static void main(String args[]) {
NutritionalFacts n =
new NutritionalFacts.Builder(10).carbo(23).fat(1).build();
}
}
I recibo el siguiente error del compilador:
an enclosing instance that contains effectivejava.BuilderPattern.NutritionalFacts.Builder is required NutritionalFacts n = new NutritionalFacts.Builder(10).carbo(23).fat(1).build();
No entiendo lo que significa el mensaje. Por favor explique. El código anterior es similar al ejemplo sugerido por Bloch en su libro.
posible duplicado de [Un ejemplo encerrando que contiene Se requiere] (http://stackoverflow.com/questions/ 4297857/an-enclosing-instance-that-contains-my-reference-is-required) –