如何为java 7中的现有国家代码向java.util.Currency添加新货币?
例如,中国货币有如何为java 7中的现有国家代码向java.util.Currency添加新货币?,java,jvm,currency,java-7,Java,Jvm,Currency,Java 7,例如,中国货币有ISO4217codeCNY。由于该货币的全球自由交易受到限制,因此还有第二种“离岸”货币等价物,称为CNH。维基百科有一点类似于这一切 在Java7中,JVM附带了一组三个字母的ISO4217代码。但是,它不能用于将单独的货币代码添加到现有的国家代码中:它将用CNH替换CNY,这对我的目的没有好处 如何将CNH(不在ISO 4217列表中)添加到Java 7中的可用货币集合中,而不覆盖CNY 换句话说,我怎样才能为一个国家获得多个货币代码 请注意,这个问题:是针对Java6提出
ISO4217
codeCNY
。由于该货币的全球自由交易受到限制,因此还有第二种“离岸”货币等价物,称为CNH
。维基百科有一点类似于这一切
在Java7
中,JVM附带了一组三个字母的ISO4217
代码。但是,它不能用于将单独的货币代码添加到现有的国家代码中:它将用CNH
替换CNY
,这对我的目的没有好处
如何将CNH
(不在ISO 4217
列表中)添加到Java 7
中的可用货币集合中,而不覆盖CNY
换句话说,我怎样才能为一个国家获得多个货币代码
请注意,这个问题:是针对Java6提出并回答的。但是替换java.util.CurrencyData
的策略不起作用,因为该文件已不存在。这里的关键在于,通过替换名为currency.data
的文件,允许更新货币列表,而无需重建rt.jar。使用此方法,而不是currency.properties
override方法,可以添加新的货币代码,而不会影响来自同一国家/地区的其他货币代码
没有说的是如何实际构建新的货币.data
。
该文件由名为CurrencyData.properties
的文件生成,该文件可以在java/util中的OpenJDK源代码中找到
我所做的是复制(openjdk\jdk\src\share\classes\java\util
)中的CurrencyData.properties
),并更改了行:
BZD084-CAD124-CDF976-CHF756-CLF990-CLP152-CNY156-COP170-CRC188-CSD891-CUP192-\
到
然后我在openjdk\jdk\make\tools\src\build\tools\GenerateCurrencyData
上抓取了源代码发行版中的GenerateCurrencyData.java
文件。此实用程序以与CurrencyData.properties相同的格式从System.In获取输入,并将其转换为currency.data文件。我做了一点小小的更改,使其使用FileInputStream而不是System。在:
currencyData.load(System.in);
到
在编辑好的CurrencyData.properties文件上运行该文件,将原始的.data文件放在安全的地方后,将生成的currency.data文件放在JRE\lib目录中,现在您可以运行使用currency.getInstance(“CNH”)
的代码,以获得@sharakan答案:
您可能还需要添加新更改的货币,在我的例子中是BYN
BY=BYR;2016-07-01-00-00-00;拜恩
格式:
老狗狗;变更日期;纽约
希望它能帮助一些人。可能重复@bobs在Java 6和Java 7中的方法。你链接到的问题是Java 6,这是Java 7。@bobs我知道。。。我问了他们两个!;)
currencyData.load(System.in);
currencyData.load(new FileInputStream(fileName));