最近,Sun/Oracle 将乌克兰格里夫纳的货币代码更改为不正确的代码,我必须在代码中修复该问题。
我发现 Java 6 应该允许我通过CurrencyNameProvider ( here ) 在 Java 级别执行此操作(详细信息为 see also )。
不幸的是,我不明白哪些语言环境应该返回方法
public Locale[] getAvailableLocales() {}
欢迎任何工作示例!
最佳答案
// Be aware that you need to provide ukrainian names to ALL currency symbols which
// your program uses.
import java.util.Locale;
import java.util.spi.CurrencyNameProvider;
public class UaCurrencyNameProvider extends CurrencyNameProvider {
private static final Locale UKRAINE = new Locale("uk", "UA");
private static final String UAH_SYMB = "грн.";
private Locale[] availableLocales = new Locale[] {UKRAINE};
@Override
public Locale[] getAvailableLocales() {
return availableLocales;
}
@Override
public String getSymbol(String currencyCode, Locale locale) {
if(currencyCode == null) {
throw new NullPointerException();
}
else if(!UKRAINE.equals(locale)) {
throw new IllegalArgumentException("Locale not supported");
}
else if("UAH".equals(currencyCode)) {
return UAH_SYMB;
} else {
return null;
}
}
}
关于Java 6 重新定义货币符号(通过CurrencyNameProvider?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5842295/