Android多种货币格式

时间:2012-06-11 10:56:50

标签: java android enums

我在enum中有几种货币,如下所示:

public enum Currencies{USD, LVL, EUR;}

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

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

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

其中getCurrency()将货币作为特定Item的字符串返回。

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

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

1 个答案:

答案 0 :(得分:1)

首先,您的getCurrency方法可能(通过查找或直接返回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;
}