NumberFormat.getInstance是否可以保证创建新实例?

Pau*_*rth 9 java

请考虑以下代码:

NumberFormat format = NumberFormat.getInstance();
format.setMinimumFractionDigits(spotDecimalPlaces);
format.setMaximumFractionDigits(spotDecimalPlaces);
Run Code Online (Sandbox Code Playgroud)

它"安全"吗?是NumberFormat.getInstance()保证返回一个新的NumberFormat每次对象?

或者是否有可能getInstance()返回相同的实例?(在这种情况下,此代码会影响恰好使用的JVM中的其他位置getInstance...)

查看源代码,似乎每次都返回一个新实例.JavaDoc对此事感到沮丧.

如果上面的代码确实是"安全的",那么在我看来getInstance(),这个方法的名称很差 - 它应该被调用createInstance().

是否NumberFormat.getInstance()保证始终返回新实例?

JB *_*zet 10

是的,这很安全.代码要么从a获取实例NumberFormatProvider(必须根据文档返回一个新实例),要么创建一个新实例DecimalFormat.

逻辑上,因为NumberFormat是可变的,返回相同的实例或缓存的实例会使该方法完全无法使用.