我最近開始閱讀Joshua Bloch撰寫的Effective Java。我發(fā)現(xiàn)構(gòu)建器模式[書中的項(xiàng)目2]的想法非常有趣。我試圖在我的項(xiàng)目中實(shí)現(xiàn)它,但是有編譯錯(cuò)誤。本質(zhì)上,以下是我想做的事情:具有多個(gè)屬性的類及其構(gòu)建器類: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(); }}我收到以下編譯器錯(cuò)誤:一個(gè)包含有效java.BuilderPattern.NutritionalFacts.Builder的封閉實(shí)例。NutritionalFacts n = new NutritionalFacts.Builder(10).carbo(23).fat(1).build();我不明白該消息的含義。請(qǐng)解釋。上面的代碼類似于Bloch在他的書中建議的示例。
有效Java中的構(gòu)建器模式
達(dá)令說(shuō)
2019-10-16 11:16:11