获取javax.money.CurrencyUnit的显示名称

时间:2016-06-16 21:27:30

标签: java joda-money java-money jsr354

我有一个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的格式化程序。

谢谢

2 个答案:

答案 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