1

我有一个实例,javax.money.CurrencyUnit我想在给定的语言环境中显示它的名称(例如“美元”、“欧元”、“日元”等)。我已经阅读了所有文档,但我唯一能找到的是如何格式化 a MonetaryAmount

MonetaryFormats.getAmountFormat(AmountFormatQueryBuilder.of(Locale.US).set(CurrencyStyle.NAME).set("pattern", "00,00,00,00.00 ¤").build()).format(myCurrencyUnit);

我可以看到我在那里指定CurrencyStyle.NAME,所以它会在结果中返回货币名称,但问题是我没有 aMonetaryAmount并且我找不到CurrencyUnit.

谢谢

4

2 回答 2

0

我从代码中看到的是 JavaMoney 不支持货币显示名称这样的概念。CurrencyStyle.NAME尝试从 JDK Currency 解析显示名称。

/**
 * 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();
}

因此,您无法获得比特币等自定义货币的显示名称。它是创建一个功能请求获取货币单位的显示名称/符号

于 2016-09-02T13:20:48.073 回答
0

感谢您提出这个问题。事实上,JavaMoney/Money JSR 版本 1 依赖于内置的 JDK 资源。由于此类需求和其他需求,我们讨论了新版本,请随时关注或评论Java Money API 问题跟踪器中的https://github.com/JavaMoney/jsr354-api/issues/58

于 2018-06-05T09:58:58.500 回答