繁体   English   中英

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

[英]Why does the Boolean object have a public constructor in 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 9 开始, Boolean(boolean)构造函数已被弃用 请参阅javadoc

对于那些关心历史的人来说,有一个长期存在的错误要求弃用构造函数。 它是在JEP 277 中正式提出的,还有一些其他的弃用。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM