为什么布尔对象在 Java 中有一个公共构造函数?

2022-09-01 17:28:50

Java 中构造函数的文档声明:new Boolean(boolean value)

注意:很少适合使用此构造函数。除非需要新实例,否则静态工厂通常是更好的选择。它可能会产生明显更好的空间和时间性能。valueOf(boolean)

如果是这样,为什么这个构造函数是公开的,而不是不推荐使用的?有没有一个很好的理由来使用这个构造函数而不是?Boolean.valueOf()


答案 1

valueOf()仅在Java 1.4中添加,因此构造函数的存在似乎是为了向后兼容。

此票证解释了不弃用构造函数的原因:

由于弃用 API 可能会造成中断,目前 API 必须“主动危险”才能被弃用,如 Thread.stop。虽然使用此构造函数肯定是不明智的,但它不会上升到(或沉淀)到在JDK中弃用的危险性标准。将来,我们可能会添加一个“诋毁”工具来标记API元素,这些API元素并不是那么糟糕,应该被弃用,但在大多数情况下不应该使用。这个构造函数将是诋毁的良好候选者。

我想不出一个现实的场景,其中使用构造函数将是做一些有用的事情的最佳方式。Boolean


答案 2

通常,您会希望直接使用甚至/常量。valueOf(boolean)Boolean.TRUEBoolean.FALSE

但请考虑以下方案:您希望使用私有变量作为同步线程的监视器。在那里,您需要确保使用自己的实例并完全控制它。Boolean