我应该在Builder Pattern中使用原始数据类型或包装器数据类型[关闭]

问题描述 投票:-2回答:1

为构建器模式中的参数使用包装类数据类型,然后在构建方法期间将其转换为原始数据类型或更好地在整个构建器模式中使用原始数据类型以及对可空数据进行所有数据转换是否更好?控制器中的类型或调用构建器模式的方法?

   public Builder recent(final Boolean recent) {
        if (recent != null) {
            this.recent = recent;
        }
        return this;
    }

VS

    public Builder recent(final boolean recent) {
        this.recent = recent;
        return this;
    }
java design-patterns builder
1个回答
3
投票

这取决于null值是否有效。

您的两个示例的语义略有不同。

public Builder recent(final Boolean recent) {
        if (recent != null) {
            this.recent = recent;
        }
        return this;
    }

上面基本上说this.recent实际上可以保持null值(如果它的类型也是Boolean),但是一旦它被设置为非空值,它就永远不会回来,即使调用者需要它并通过null(是这是你想要的东西)?

public Builder recent(final boolean recent) {
        this.recent = recent;
        return this;
    }

这就是说recent可以设置为truefalse。如果null实际上是this.recent类型,那么调用者不会被误导以为他可以将其设置回Boolean。如果你有一个合理的默认值,你甚至可以选择直接将this.recent设置为该默认值,从而最大限度地减少在其他地方获得NullPointerException时出错的可能性。

© www.soinside.com 2019 - 2024. All rights reserved.