为什么Boolean对象在Java中有公共构造函数?

Java状态中构造函数new Boolean(boolean value)文档:

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

如果是这样,为什么这个构造函数是公开的而不是弃用的? 是否有充分的理由使用此构造函数而不是Boolean.valueOf()

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

此票证说明了不弃用构造函数的原因:

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

我想不出一个现实的场景,使用Boolean构造函数是做有用事情的最好方法。

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

但想想你想要使用私有Boolean变量作为同步线程的监视器的场景。 在那里,您需要确保使用自己的实例并完全控制它。

另一个,不一定是好理由可能只是让它与其他原生包装器保持一致。

它没有被弃用的原因是Java保持向版本1.0的向后兼容性

我想不出使用构造函数的好理由。