这里的关键是作为 Java 7 一部分的更改,允许更新货币列表,而无需通过替换名为 .jar 的文件来重建 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-\
至
BZD084-CAD124-CDF976-CHF756-CLF990-CLP152-CNH156-CNY156-COP170-CRC188-CSD891-CUP192-\
GenerateCurrencyData.java
然后我在源代码分发中抓取了文件openjdk\jdk\make\tools\src\build\tools\generatecurrencydata
。此实用程序以与 CurrencyData.properties 相同的格式从 System.In 获取输入,并将其转换为 currency.data 文件。我做了一点改动,使它使用 FileInputStream 而不是 System.In:
currencyData.load(System.in);
至
currencyData.load(new FileInputStream(fileName));
在您编辑的 CurrencyData.properties 文件上运行它,并将原始 .data 文件放在安全的地方后,将生成的 currency.data 文件放入您的 JRE\lib 目录,您现在可以运行使用 .data 的代码Currency.getInstance("CNH")
。