1

のインスタンスがjavax.money.CurrencyUnitあり、特定のロケールでの名前を表示したい (たとえば、「米ドル」、「ユーロ」、「日本円」など)。私はすべてのドキュメントを読みましたが、見つけることができた唯一のことは、フォーマットする方法ですMonetaryAmount:

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

そして、指定したことがわかりますCurrencyStyle.NAMEので、結果に通貨名が返されますが、問題は がMonetaryAmountなく、 のフォーマッタが見つからなかったことですCurrencyUnit

ありがとうございました

4

2 に答える 2

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 などのカスタム通貨の表示名を取得することはできません。これは、通貨単位の表示名/記号を取得する機能要求を作成しました

于 2016-09-02T13:20:48.073 に答える