ThreadLocal DecimalFormat не форматируется должным образом - PullRequest
0 голосов
/ 22 мая 2019

У меня есть объект ThreadLocal ниже:

  private static final ThreadLocal< DecimalFormat > formatter = new ThreadLocal< DecimalFormat >() 
  {
    @Override
    protected DecimalFormat initialValue() 
    {
    // n should be any number of decimals without having to specify them.
      return new DecimalFormat();     
    }
  };

Когда я запускаю formatter.get.format(1234567) в немецком языке, я получаю: 123456,0, что не то, что я хочу.

Я изменилобъект ThreadLocal для:

  private static final ThreadLocal< DecimalFormat > localisedDecimalFormatter = new ThreadLocal< DecimalFormat >() 
  {
    public DecimalFormat get() 
    {
      return new DecimalFormat();
    }    
  };

Когда я запускаю formatter.get.format(1234567) в немецкой локали, я получаю: 123.456, это именно то, что я хочу.

Использование формата DecimalFormat (123456) даетожидаемое значение, но не является потокобезопасным

Мой вопрос, является ли это неправильное использование ThreadLocal?Если так, как я мог бы использовать это, не используя плохие методы кодирования?(Я знаю, что мог бы использовать formatter.remove () для запуска initialValue () каждый раз, но не уверен, является ли это излишним)

...