我正在尝试创建一个MonetaryAmountFormat
使用货币单位符号的:
MonetaryAmountFormat format = MonetaryFormats.getAmountFormat(
AmountFormatQueryBuilder.of(Locale.GERMANY)
.set(org.javamoney.moneta.format.CurrencyStyle.SYMBOL)
.set("pattern", "#,##0.##¤")
.build()
);
(取自How to format MonetaryAmount with currency symbol?和Customizing a MonetaryAmountFormat using the Moneta (JavaMoney) JSR354 implementation)。
java/maven 项目在运行时(不是编译时)范围内依赖于 moneta。似乎该类CurrencyStyle
及其值SYMBOL
是 moneta(java-money 参考实现)的一部分,而不是 java-money API 的一部分。因此,代码无法编译。
我创建了这个丑陋的解决方法:
String currencyStyle = "org.javamoney.moneta.format.CurrencyStyle";
final Enum<?> SYMBOL = Enum.valueOf((Class<? extends Enum>) Class.forName(currencyStyle), "SYMBOL");
MonetaryAmountFormat format = MonetaryFormats.getAmountFormat(
AmountFormatQueryBuilder.of(Locale.GERMANY)
.set(currencyStyle, SYMBOL)
.set("pattern", "#,##0.##¤")
.build()
);
是否可以创建一个MonetaryAmountFormat
使用货币单位符号而无需此 hack?