2016-06-16 114 views
1

我有一個javax.money.CurrencyUnit的實例,我想在給定的語言環境中顯示它的名稱(例如「美元」,「歐元」,「日元」等) 。我讀過所有的文檔,但我能找到的唯一的事情就是如何格式化MonetaryAmount獲取顯示名稱javax.money.CurrencyUnit

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

而且我可以看到有我指定CurrencyStyle.NAME所以它會在結果返回的貨幣名稱,但問題是我沒有MonetaryAmount,我找不到CurrencyUnit的格式化程序。

謝謝

回答

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

因此,您無法獲得像BitCoin這樣的自定義貨幣的顯示名稱。 這報告爲JAVAMONEY-163