亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

有效Java中的構建器模式

有效Java中的構建器模式

達令說 2019-10-16 11:16:11
我最近開始閱讀Joshua Bloch撰寫的Effective Java。我發現構建器模式[書中的項目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();    }}我收到以下編譯器錯誤:一個包含有效java.BuilderPattern.NutritionalFacts.Builder的封閉實例。NutritionalFacts n = new NutritionalFacts.Builder(10).carbo(23).fat(1).build();我不明白該消息的含義。請解釋。上面的代碼類似于Bloch在他的書中建議的示例。
查看完整描述

3 回答

?
一只斗牛犬

TA貢獻1784條經驗 獲得超2個贊

使構建器成為一個static類。然后它將起作用。如果它是非靜態的,則將需要其擁有類的實例-重點是不要擁有它的實例,甚至禁止在沒有構建器的情況下創建實例。


public class NutritionFacts {

    public static class Builder {

    }

}


查看完整回答
反對 回復 2019-10-16
  • 3 回答
  • 0 關注
  • 651 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號