0

在阅读 Joshua Block 的 Effective Java Book 第 1 项关于使用工厂静态方法而不是构造函数后,我一直在研究这个问题。在文本中,他尽可能为使用进行辩护,并在其他理由中引用了实施SingletonFlyweight标准的可能性。它还引用了该类的案例,该类通过方法Boolean明智地使用了valueOf (boolean)元:

public static Boolean valueOf(boolean b) {
return b ? Boolean.TRUE : Boolean.FALSE;
}

我的问题是:我了解使用这些模式的优点,但无法在构造函数本身中实现?单独使用它们并不能证明创建静态工厂方法是合理的。

4

1 回答 1

1

但无法在构造函数本身中实现?

否:new根据规范,总是创建一个新实例(或失败),因此new Boolean(b)总是返回一个新实例Boolean

Boolean.valueOf返回一个预先存在的实例。这是可取的,因为只有两个可能的值,所以创建更多值根本没有意义。

于 2019-10-24T15:19:39.563 回答