我有一个javax.money.CurrencyUnit
的实例,我希望在给定的区域设置中显示它的名称(例如" US Dollars"," Euro&#34 ;," Japenese Yen"等)。我已经阅读了所有文档,但我唯一能找到的是如何格式化MonetaryAmount
:
MonetaryFormats.getAmountFormat(AmountFormatQueryBuilder.of(Locale.US).set(CurrencyStyle.NAME).set("pattern", "00,00,00,00.00 ¤").build()).format(myCurrencyUnit);
我可以在那里看到我指定CurrencyStyle.NAME
所以它会在结果中返回货币名称,但问题是我没有MonetaryAmount
而我无法做到找到CurrencyUnit
的格式化程序。
谢谢
答案 0 :(得分:0)
我从代码中看到的是JavaMoney不支持货币显示名称这样的概念。 CurrencyStyle.NAME
尝试从JDK货币解析显示名称。
/**
* This method tries to evaluate the localized display name for a
* {@link CurrencyUnit}. It uses {@link Currency#getDisplayName(Locale)} if
* the given currency code maps to a JDK {@link Currency} instance.
* <p>
* If not found {@code currency.getCurrencyCode()} is returned.
*
* @param currency The currency, not {@code null}
* @return the formatted currency name.
*/
private String getCurrencyName(CurrencyUnit currency) {
Currency jdkCurrency = getCurrency(currency.getCurrencyCode());
if (Objects.nonNull(jdkCurrency)) {
return jdkCurrency.getDisplayName(locale);
}
return currency.getCurrencyCode();
}
因此,您无法获得像BitCoins这样的自定义货币的显示名称。 它创建了一个功能请求Get display name/symbol of a CurrencyUnit
答案 1 :(得分:0)
感谢你提出这个问题。事实上,JavaMoney / Money JSR的第1版依赖于内置的JDK资源。我们讨论了由于此类和其他需求而导致的新版本,请随时关注或评论Java Money API问题跟踪器中的https://github.com/JavaMoney/jsr354-api/issues/58。