请考虑以下代码:
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是可变的,返回相同的实例或缓存的实例会使该方法完全无法使用.