我的枚举中有几种货币,如下所示:
public enum Currencies{USD, LVL, EUR;}
然后有一个条目列表(属于 Item 类),每个条目都有一个上述货币之一的数字(long 类型)。现在我想尽可能高效地格式化这个数字。
到目前为止我所做的是创建一个函数
public String getFormatedSum(){
NumberFormat mCurrencyFormatter = NumberFormat.getCurrencyInstance();
mCurrencyFormatter.setCurrency(Currency.getInstance(getCurrency().toString()));
return mCurrencyFormatter.format(getSum());
}
其中 getCurrency()
将货币作为特定项目的字符串返回。
现在我知道这是可行的,但我也怀疑应该有更好的方法来做到这一点。我曾想过在 map 中实例化格式化程序,然后检索我需要的格式化程序并进行格式化,但 NumberFormat
类似乎是静态的。
有什么建议吗?或者我这样做对吗?
最佳答案
首先,您的 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;
}
关于java - Android 多货币格式化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10978785/