java 9起包装类构造方法被@deprecated标记,因valueof工厂方法可复用缓存对象、更高效安全;所有数值型及boolean类均需用valueof替代new,java 21中构造方法虽保留但已非首选。

Java中包装类的构造方法(如 new Integer(int)、new Long(long) 等)从 Java 9 开始被官方标记为 @Deprecated,明确不推荐使用。
为什么是Java 9?
这是Java平台对性能和API设计统一性的一次重要调整。构造方法每次调用都会创建新对象,而工厂方法(如 Integer.valueOf(int))可复用缓存对象,更高效也更安全。
替代方案必须用valueOf
-
Integer.valueOf(123)替代new Integer(123) -
Boolean.valueOf("true")替代new Boolean("true") - 所有数值型包装类(
Byte、Short、Long、Float、Double)同理
后续版本持续强化这一规范
Java 16–17 进一步加强弃用警告;到 Java 21,构造方法虽仍存在,但编译器会给出更醒目的提示,且文档中已移除其作为首选方式的说明。
实际编码中,只要涉及包装类实例创建,一律优先选用 valueOf 方法——它既兼容缓存机制,又避免无谓的对象开销。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











