0

我在一个枚举中有几种货币,如下所示:

public enum Currencies{USD, LVL, EUR;}

然后是一个条目列表(属于 Item 类),每个条目都有多个(长类型)上述货币之一。现在我想尽可能有效地形成这个数字。

到目前为止我所做的是创建一个函数

public String getFormatedSum(){
    NumberFormat mCurrencyFormatter = NumberFormat.getCurrencyInstance();
    mCurrencyFormatter.setCurrency(Currency.getInstance(getCurrency().toString()));
    return mCurrencyFormatter.format(getSum()); 
}

wheregetCurrency()将货币作为特定项目的字符串返回。

现在我知道这可行,但我也怀疑应该有更好的方法来做到这一点。我曾想过在地图中实例化格式化程序,然后检索我需要的格式化程序并进行格式化,但NumberFormat该类似乎是静态的。

任何提示,或者我这样做对吗?

4

1 回答 1

1

首先,您的 getCurrency 方法也许可以(通过查找或直接返回 a Currency(也许它已经这样做了)。

NumberFormat不是静态的,但有一个静态工厂方法用于创建实例。您可以将实例保存在Map

Map<Currency, NumberFormat> formatters = new HashMap<>();
...

NumberFormat getCurrencyFormatter(Currency currency) {
    NumberFormat result = formatters.get(currency);
    if (result == null) {
        result = NumberFormat.getCurrencyInstance();
        result.setCurrency(currency);
        formatters.put(currency, result);
    }
    return result;
}
于 2012-06-11T12:03:43.780 回答