2012-09-14 18 views
7

उदाहरण के लिए, चीनी मुद्रा में ISO 4217 कोड CNY है। चूंकि उस मुद्रा में मुफ्त वैश्विक व्यापार प्रतिबंधित है, हालांकि, दूसरा 'ऑफशोर' मुद्रा समतुल्य है, जिसे CNH कहा जाता है। विकिपीडिया में इस सब का summary है।जावा 7 में मौजूदा देश कोड के लिए java.util.Currency में एक नई मुद्रा कैसे जोड़ूं?

Java 7 में, method for updating है जो तीन अक्षर ISO 4217 कोडों का सेट है जो JVM जहाजों के साथ है। हालांकि, इसका उपयोग किसी मौजूदा देश कोड में एक अलग मुद्रा कोड जोड़ने के लिए नहीं किया जा सकता है: यह CNY को CNH के साथ प्रतिस्थापित करेगा, जो मेरे उद्देश्यों के लिए अच्छा नहीं है।

मैं कैसे CNY अधिलेखन बिना Java 7 में उपलब्ध मुद्राओं के सेट करने के लिए CNH में शामिल कर सकता है (जो ISO 4217 सूची में नहीं है),?

एक और तरीका रखो, मैं एक देश के लिए एकाधिक मुद्रा कोड कैसे प्राप्त कर सकता हूं?

ध्यान दें कि यह प्रश्न: How do I add the new currency code to Java?था पूछा और जावा 6के लिए जवाब दे दिया। लेकिन java.util.CurrencyData को बदलने की रणनीति काम नहीं करती है क्योंकि वह फ़ाइल अब मौजूद नहीं है।

+0

संभावित डुप्लिकेट [मैं जावा में नया मुद्रा कोड कैसे जोड़ूं?] (Http://stackoverflow.com/questions/9982537/how-do-i-add-the-new-currency-code-to- जावा) – bobs

+0

@bobs जावा 6 बनाम जावा 7 में ऐसा करने का तरीका जावा 6 का लिंक है, यह जावा 7 है। – sharakan

+0

@bobs मुझे पता है ... मैंने उन दोनों से पूछा! ;) – sharakan

उत्तर

8

यहां कुंजी change that's part of Java 7 में currency.data नामक फ़ाइल को प्रतिस्थापित करके rt.jar के पुनर्निर्माण के बिना मुद्राओं की सूची को अपडेट करने की अनुमति देने के लिए है। इस दृष्टिकोण का उपयोग currency.properties ओवरराइड दृष्टिकोण के बजाय, आपको उसी देश से अन्य लोगों को प्रभावित किए बिना नए मुद्रा कोड जोड़ने की अनुमति देता है।

वास्तव में एक नया currency.data बनाने के बारे में कैसे जाना है, वहां असुरक्षित छोड़ दिया गया है। यह फ़ाइल CurrencyData.properties नामक फ़ाइल से जेनरेट की गई है, जिसे जावा/उपयोग में ओपनजेडीके स्रोत कोड में पाया जा सकता है।

मैं क्या किया था CurrencyData.propertiesOpenJDK source (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 के रूप में, और इसे एक मुद्रा.data फ़ाइल में बदल देता है। इतना है कि यह System.In के बजाय एक FileInputStream इस्तेमाल किया मैं एक मामूली परिवर्तन किया:

currencyData.load(System.in); 

को
currencyData.load(new FileInputStream(fileName)); 

भागो कि अपने संपादित CurrencyData.properties फ़ाइल पर और, मूल .data फ़ाइल डालने के बाद कहीं सुरक्षित, परिणामी currency.data फ़ाइल को अपनी जेआरई \ lib निर्देशिका में रखें, और अब आप Currency.getInstance("CNH") का उपयोग करने वाले कोड को चला सकते हैं।

0
@sharakan जवाब देने के लिए

:

BYN; तुम भी BYN

द्वारा = BYR नए परिवर्तित मुद्रा जोड़ने के लिए, मेरे मामले में पड़ सकता है, 2016-07-01-00-00-00 प्रारूप में: OLD_CUR; DATE_OF_CHANGE; NEW_CUR

आशा है कि इससे किसी की मदद मिलेगी।