10

たとえば、人民元のISO 4217コードはですCNY。ただし、その通貨での無料のグローバル取引は制限されているため、と呼ばれる2番目の「オフショア」通貨に相当するものがありCNHます。ウィキペディアには、このすべての要約が少しあります。

には、JVMに付属している3文字のコードのセットを更新Java 7する方法があります。ただし、既存の国コードに別の通貨コードを追加するために使用することはできません。これは、に置き換えられます。これは、私の目的には適していません。ISO 4217CNYCNH

で利用可能な通貨のセットにCNH(リストにない)を上書きせずに追加するにはどうすればよいですか? ISO 4217Java 7CNY

言い換えれば、1つの国の複数の通貨コードを取得するにはどうすればよいですか?

この質問に注意してください:新しい通貨コードをJavaに追加するにはどうすればよいですか?Java6について質問され回答されました。ただし、そのファイルが存在しないため、置換の戦略は機能しません。java.util.CurrencyData

4

2 に答える 2

11

ここで重要なのは、Java 7の一部である変更で、。というファイルを置き換えることにより、rt.jarを再構築せずに通貨のリストを更新できるようにすることですcurrency.data。オーバーライドアプローチではなく、このアプローチを使用するcurrency.propertiesと、同じ国の他の通貨コードに影響を与えることなく、新しい通貨コードを追加できます。

言われていないのは、実際に新しいを構築する方法currency.dataです。CurrencyData.propertiesこのファイルは、java/utilのOpenJDKソースコードにあると呼ばれるファイルから生成されます。

私がしたことは、 OpenJDKソース( )でCurrencyData.properties見つかったものをコピーし、次の行を変更したことです。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。このユーティリティは、System.InからCurrencyData.propertiesと同じ形式で入力を受け取り、それをcurrency.dataファイルに変換します。System.Inの代わりにFileInputStreamを使用するように少し変更しました。

currencyData.load(System.in);

currencyData.load(new FileInputStream(fileName));

編集したCurrencyData.propertiesファイルでこれを実行し、元の.dataファイルを安全な場所に置いた後、結果のcurrency.dataファイルをJRE \ libディレクトリに配置すると、を使用するコードを実行できるようになりますCurrency.getInstance("CNH")

于 2012-09-14T21:59:52.087 に答える
0

@sharakanの回答へ:新しく変更された通貨、私の場合はBYNも追加する必要があるかもしれません

BY = BYR; 2016-07-01-00-00-00; BYN

形式:OLD_CUR; DATE_OF_CHANGE; NEW_CUR

それが誰かを助けることを願っています。

于 2016-11-25T12:49:16.773 に答える