sha*_*kan 9 java jvm currency java-7
例如,中国货币有ISO 4217代码CNY.由于该货币的自由全球交易受到限制,因此有第二种"离岸"货币等价物,称为CNH.维基百科对这一切有一点总结.
在Java 7,有一种方法可以更新ISO 4217 JVM附带的三个字母代码集.但是,它不能用于向现有国家/地区代码添加单独的货币代码:它将替换CNY为CNH,这对我的目的没有好处.
如何在不覆盖的情况下将CNH(不在ISO 4217列表中)添加到可用货币集中? Java 7CNY
换句话说,如何为一个国家/地区获取多种货币代码?
请注意,这个问题:如何将新货币代码添加到Java?被提出和回答了Java 6中.但是替换策略java.util.CurrencyData不起作用,因为该文件不再存在.
sha*_*kan 11
这里的关键是改变Java 7的一部分,允许更新货币列表而无需通过替换一个名为的文件来重建rt.jar currency.data.使用此方法而不是currency.properties覆盖方法,允许您添加新的货币代码,而不会影响来自同一国家/地区的其他代码.
什么是未说明的是如何实际建立一个新的currency.data.该文件是从一个名为的文件生成的CurrencyData.properties,可以在java/util的OpenJDK源代码中找到.
我做的是复制CurrencyData.properties在OpenJDK源(openjdk\jdk\src\share\classes\java\util)中找到的,并更改了行:
BZD084-CAD124-CDF976-CHF756-CLF990-CLP152-CNY156-COP170-CRC188-CSD891-CUP192-\
Run Code Online (Sandbox Code Playgroud)
至
BZD084-CAD124-CDF976-CHF756-CLF990-CLP152-CNH156-CNY156-COP170-CRC188-CSD891-CUP192-\
Run Code Online (Sandbox Code Playgroud)
然后我抓住了GenerateCurrencyData.java源代码发布中的文件openjdk\jdk\make\tools\src\build\tools\generatecurrencydata.此实用程序以与CurrencyData.properties相同的格式从System.In获取输入,并将其转换为currency.data文件.我做了一个小改动,以便它使用FileInputStream而不是System.In:
currencyData.load(System.in);
Run Code Online (Sandbox Code Playgroud)
至
currencyData.load(new FileInputStream(fileName));
Run Code Online (Sandbox Code Playgroud)
在您编辑的CurrencyData.properties文件上运行该文件,并在将原始.data文件放在安全的地方后,将生成的currency.data文件放入JRE\lib目录,然后您就可以运行使用的代码了Currency.getInstance("CNH").
| 归档时间: |
|
| 查看次数: |
4439 次 |
| 最近记录: |