首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Effective Java中的构建器模式

Effective Java中的构建器模式
EN

Stack Overflow用户
提问于 2011-02-16 01:48:25
回答 11查看 123.4K关注 0票数 140

我最近开始阅读Joshua Bloch的Effective。我发现书中关于构建器模式的想法非常有趣。我试图在我的项目中实现它,但出现了编译错误。以下是我想要做的事情:

具有多个属性的类及其构建器类:

代码语言:javascript
复制
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;
    }
}

类,其中我尝试使用上面的类:

代码语言:javascript
复制
public class Main {
    public static void main(String args[]) {
        NutritionalFacts n = 
            new NutritionalFacts.Builder(10).carbo(23).fat(1).build();
    }
}

我得到以下编译器错误:

需要新的包含effectivejava.BuilderPattern.NutritionalFacts.Builder的封闭实例n=

NutritionalFacts.Builder(10).carbo(23).fat(1).build();

我不明白这条信息是什么意思。请解释一下。上面的代码类似于Bloch在他的书中建议的示例。

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5007355

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档