首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Effective Java书籍中实现构建器接口

在Effective Java书籍中实现构建器接口
EN

Stack Overflow用户
提问于 2010-08-10 03:31:20
回答 1查看 3.2K关注 0票数 4

我正在阅读Joshua Bloch的Effective。在第16页的顶部,他说:

代码语言:javascript
复制
Note that our NutritionFacts.Builder class could be declared to implement
Builder<NutritionFacts>.

但是,"Builder“如何实现"Builder”接口,因为那里存在名称空间冲突,例如:

代码语言:javascript
复制
public static class Builder implements Builder<NutritionFacts>...

我应该将内部静态类重命名为NutritionFacts.NutritionBuilder之类的名称吗?

下面是他提供的构建器模式:

代码语言:javascript
复制
// Builder Pattern
public class NutritionFacts {
 private final int servingSize;
 private final int servings;
 private final int calories;
 private final int fat;
 private final int sodium;
 private final int carbohydrate;

public static class Builder {
    // Required parameters
    private final int servingSize;
    private final int servings;

    // Optional parameters - initialized to default values
    private int calories      = 0;
    private int fat           = 0;
    private int carbohydrate  = 0;
    private int sodium        = 0;

    public Builder(int servingSize, int servings) {
        this.servingSize = servingSize;
        this.servings    = servings;
    }

    public Builder calories(int val)
        { calories = val;      return this; }
    public Builder fat(int val)
        { fat = val;           return this; }
    public Builder carbohydrate(int val)
        { carbohydrate = val;  return this; }
    public Builder sodium(int val)
        { sodium = val;        return this; }

    public NutritionFacts build() {
        return new NutritionFacts(this);
    }
}

private NutritionFacts(Builder builder) {
    servingSize  = builder.servingSize;
    servings     = builder.servings;
    calories     = builder.calories;
    fat          = builder.fat;
    sodium       = builder.sodium;
    carbohydrate = builder.carbohydrate;
}
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-08-10 03:37:18

您可以完全限定接口名称。

即:

代码语言:javascript
复制
public static class Builder implements my.package.Builder<NutritionFacts> {
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3443489

复制
相关文章

相似问题

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