【发布时间】:2018-05-06 04:49:03
【问题描述】:
Java 9 的一个新特性是弃用了包装对象的构造函数。创建新 Wrapper 对象的唯一方法是使用它们的 valueOf() 静态方法。
例如对于 Integer 对象,Integer.valueOf 为 -128 和 127 之间的值实现缓存,并在每次调用时返回相同的引用。
正如Integer 类的 API 所说,“静态工厂 valueOf(int) 通常是更好的选择,因为它可能会产生明显更好的空间和时间性能。”并且 JLS 说“给定相应原始类型的值,通常不需要构造这些盒子类的新实例。推荐的构造替代方法是自动装箱或 valueOf 静态工厂方法。在大多数情况下,自动装箱会起作用,因此类型为基元的表达式可用于需要框类的位置"
但是超出这个范围的值会发生什么? 例如 Integer x = Integer.valueOf(456) 是每次执行类时的新对象?
【问题讨论】: