Статьи

JDK 7 дополнений к классу валют

Класс java.util.Currency был доступен начиная с JDK 1.4 , но JDK 7 предоставил несколько новых полезных методов на уровне класса и экземпляра. Я смотрю на эти новые методы в этом посте.

Класс Currency представляет валюты по всему миру как «идентифицированные их кодами валют ISO 4217», доступными на сайте Международной организации по стандартизации . Хотя можно переопределить представленные валюты, доступные в экземпляре JVM, поместив соответствующий файл свойств в <JAVA_HOME> /lib/currency.properties, большинство из нас, вероятно, будут использовать валюты, предоставляемые «из коробки» с JVM. Легко узнать, что это за доступные валюты, с помощью функции getAvailableCurrencies () нового класса JDK 7 для класса .

Мне нравится, когда JDK предоставляет доступ к деталям JVM во время выполнения. Добавление Currency.getAvailableCurrencies () обеспечивает эту поддержку для валюты, аналогичной той, которая доступна для locales [ Locale.getAvailableLocales () ], часовых поясов [ TimeZone.getAvailableIDs () ], наборов символов [ CharSet.availableCharsets () ] и доступна. Скриптовые движки JVM [ ScriptEngineManager.getEngineFactories () ]. Статическую функцию легко вызвать с помощью однострочного скрипта Groovy, который вызывается напрямую с опцией -e:

groovy -e «Currency.availableCurrencies.each {println it}»

В JDK 7 добавлены три новых метода уровня экземпляра. Два из них [ getDisplayName () и getDisplayName (Locale) ] предоставляют строковое имя экземпляра валюты (один для локали по умолчанию и один для предоставленной локали) , Третий новый метод [ getNumericCode () ] предоставляет int, представляющий числовой код для этого экземпляра валюты.

Следующий листинг кода представляет собой простое Java-приложение, которое запускает все доступные валюты с использованием метода, добавленного в JDK 7, а затем печатает числовой код для каждой валюты вместе с двумя версиями отображаемого имени валюты, как это предусмотрено новыми методами JDK 7.

Пример, демонстрирующий методы JDK 7 для валюты

package dustin.examples;

import static java.lang.System.out;
import java.util.Currency;
import java.util.Locale;
import java.util.Set;

/**
 * Demonstrate methods added to java.util.Currency in JDK 7.
 * 
 * @author Dustin
 */
public class Main
{
   /**
    * Main executable function for demonstrating Currency methods added in JDK 7.
    * 
    * @param arguments The command line arguments; none expected.
    */
   public static void main(String[] arguments)
   {
      final Set<Currency> currencies = Currency.getAvailableCurrencies();
      for (final Currency currency : currencies)
      {
         out.println(
              "Currency: "
            + currency.getDisplayName() + "/"
            + currency.getDisplayName(Locale.ITALIAN) + "/"
            + currency.getNumericCode());
      }
   }
}

Когда вышеперечисленное выполняется на используемой мной JVM, вывод выглядит следующим образом:

Currency: Venezuelan Bolívar/Bolívar venezuelano forte/937
Currency: Colombian Peso/Peso Colombiano/170
Currency: French Franc/Franco Francese/250
Currency: Kyrgystani Som/Som Kirghiso/417
Currency: Euro/Euro/978
Currency: Maltese Lira/Lira Maltese/470
Currency: Georgian Lari/Lari Georgiano/981
Currency: Afghan Afghani (1927-2002)/Afgani (1927-2002)/4
Currency: US Dollar (Next day)/Dollaro Statunitense (Next day)/997
Currency: Mozambican Metical/Metical del Mozambico/943
Currency: Dutch Guilder/Fiorino Olandese/528
Currency: Panamanian Balboa/Balboa di Panama/590
Currency: Qatari Rial/Rial del Qatar/634
Currency: Bahamian Dollar/Dollaro delle Bahamas/44
Currency: Djiboutian Franc/Franco Gibutiano/262
Currency: Serbian Dinar (2002-2006)/Serbian Dinar (2002-2006)/891
Currency: New Zealand Dollar/Dollaro Neozelandese/554
Currency: Syrian Pound/Sterlina Siriana/760
Currency: Malagasy Franc/Franco Malgascio/450
Currency: Venezuelan Bolívar (1871-2008)/Bolivar Venezuelano/862
Currency: Saudi Riyal/Ryal Saudita/682
Currency: Rwandan Franc/Franco Ruandese/646
Currency: Yemeni Rial/Rial dello Yemen/886
Currency: Barbadian Dollar/Dollaro di Barbados/52
Currency: Sierra Leonean Leone/Leone della Sierra Leone/694
Currency: Sri Lankan Rupee/Rupia di Sri Lanka/144
Currency: Chilean Peso/Peso Cileno/152
Currency: Bermudan Dollar/Dollaro delle Bermuda/60
Currency: Omani Rial/Rial Omanita/512
Currency: Myanma Kyat/Kyat di Myanmar/104
Currency: Gambian Dalasi/Dalasi del Gambia/270
Currency: Guatemalan Quetzal/Quetzal Guatemalteco/320
Currency: CFP Franc/Franco CFP/953
Currency: Turkmenistani Manat (1993-2009)/Manat Turkmeno/795
Currency: Romanian Leu/Romanian Leu/946
Currency: Singapore Dollar/Dollaro di Singapore/702
Currency: Jamaican Dollar/Dollaro Giamaicano/388
Currency: Bolivian Boliviano/Boliviano/68
Currency: Eritrean Nakfa/Nakfa Eritreo/232
Currency: Turkmenistani Manat/Turkmenistani Manat/934
Currency: Mongolian Tugrik/Tugrik Mongolo/496
Currency: Indonesian Rupiah/Rupia Indonesiana/360
Currency: ZWN/ZWN/942
Currency: Luxembourgian Franc/Franco del Lussemburgo/442
Currency: Russian Ruble (1991-1998)/Rublo della CSI/810
Currency: São Tomé and Príncipe Dobra/Dobra di Sao Tomé e Principe/678
Currency: Ukrainian Hryvnia/Hrivna Ucraina/980
Currency: Argentine Peso/Peso Argentino/32
Currency: Bahraini Dinar/Dinaro del Bahraini/48
Currency: Belize Dollar/Dollaro Belize/84
Currency: Russian Ruble/Rublo Russo/643
Currency: Laotian Kip/Kip Laotiano/418
Currency: Maldivian Rufiyaa/Rufiyaa delle Maldive/462
Currency: Libyan Dinar/Dinaro Libico/434
Currency: Sudanese Dinar (1992-2007)/Dinaro Sudanese/736
Currency: Danish Krone/Corona Danese/208
Currency: Zimbabwean Dollar (2008)/Zimbabwean Dollar (2008)/935
Currency: Spanish Peseta/Peseta Spagnola/724
Currency: Macanese Pataca/Pataca di Macao/446
Currency: Surinamese Guilder/Fiorino del Suriname/740
Currency: Samoan Tala/Tala della Samoa Occidentale/882
Currency: Swazi Lilangeni/Lilangeni dello Swaziland/748
Currency: Tanzanian Shilling/Scellino della Tanzania/834
Currency: Portuguese Escudo/Escudo Portoghese/620
Currency: XUA/XUA/965
Currency: Armenian Dram/Dram Armeno/51
Currency: Greek Drachma/Dracma Greca/300
Currency: Guinean Franc/Franco della Guinea/324
Currency: Nicaraguan Córdoba/Córdoba oro nicaraguense/558
Currency: Gibraltar Pound/Sterlina di Gibilterra/292
Currency: Bolivian Mvdol/Mvdol Boliviano/984
Currency: Bulgarian Lev/Nuovo Lev Bulgaro/975
Currency: Belgian Franc/Franco Belga/56
Currency: Kazakhstani Tenge/Tenge Kazaco/398
Currency: Solomon Islands Dollar/Dollaro delle Isole Solomon/90
Currency: Costa Rican Colón/Colón Costaricano/188
Currency: Swiss Franc/Franco Svizzero/756
Currency: Turkish Lira/Turkish Lira/949
Currency: Australian Dollar/Dollaro Australiano/36
Currency: CFA Franc BCEAO/Franco CFA BCEAO/952
Currency: Uzbekistan Som/Sum dell’Uzbekistan/860
Currency: European Unit of Account (XBD)/Unità di acconto europea (XBD)/958
Currency: Chinese Yuan/Renmimbi Cinese/156
Currency: Malawian Kwacha/Kwacha Malawiano/454
Currency: Bhutanese Ngultrum/Ngultrum Butanese/64
Currency: Zimbabwean Dollar (2009)/Zimbabwean Dollar (2009)/932
Currency: Special Drawing Rights/Diritti Speciali di Incasso/960
Currency: Italian Lira/Lira Italiana/380
Currency: Moroccan Dirham/Dirham Marocchino/504
Currency: Chilean Unit of Account (UF)/Unidades de Fomento Chilene/990
Currency: Lesotho Loti/Loti del Lesotho/426
Currency: Nigerian Naira/Naira Nigeriana/566
Currency: Guinea-Bissau Peso/Peso della Guinea-Bissau/624
Currency: Sudanese Pound/Sterlina sudanese/938
Currency: Lebanese Pound/Sterlina Libanese/422
Currency: Mauritian Rupee/Rupia Mauriziana/480
Currency: Testing Currency Code/Testing Currency Code/963
Currency: Latvian Lats/Lat Lettone/428
Currency: Japanese Yen/Yen Giapponese/392
Currency: Turkish Lira (1922-2005)/Lira Turca/792
Currency: Norwegian Krone/Corona Norvegese/578
Currency: Indian Rupee/Rupia Indiana/356
Currency: Hungarian Forint/Fiorino Ungherese/348
Currency: Tunisian Dinar/Dinaro Tunisino/788
Currency: Congolese Franc/Franco Congolese/976
Currency: Andorran Peseta/Peseta Andorrana/20
Currency: Palladium/Palladio/964
Currency: Liberian Dollar/Dollaro Liberiano/430
Currency: Netherlands Antillean Guilder/Fiorino delle Antille Olandesi/532
Currency: US Dollar (Same day)/Dollaro Statunitense (Same day)/998
Currency: Somali Shilling/Scellino Somalo/706
Currency: Mexican Peso/Peso Messicano/484
Currency: Zimbabwean Dollar (1980-2008)/Dollaro dello Zimbabwe/716
Currency: British Pound Sterling/Sterlina Inglese/826
Currency: Albanian Lek/Lek Albanese/8
Currency: Jordanian Dinar/Dinaro Giordano/400
Currency: East Caribbean Dollar/Dollaro dei Caraibi Orientali/951
Currency: Cuban Convertible Peso/Cuban Convertible Peso/931
Currency: Gold/Oro/959
Currency: Czech Republic Koruna/Corona Ceca/203
Currency: US Dollar/Dollaro Statunitense/840
Currency: Cuban Peso/Peso Cubano/192
Currency: Comorian Franc/Franco Comoriano/174
Currency: Pakistani Rupee/Rupia del Pakistan/586
Currency: Fijian Dollar/Dollaro delle Figi/242
Currency: French UIC-Franc/Franco UIC Francese/0
Currency: Vietnamese Dong/Dong Vietnamita/704
Currency: Honduran Lempira/Lempira Hoduregno/340
Currency: Brunei Dollar/Dollaro del Brunei/96
Currency: Finnish Markka/Markka Finlandese/246
Currency: European Monetary Unit/Unità monetaria europea/956
Currency: United Arab Emirates Dirham/Dirham degli Emirati Arabi Uniti/784
Currency: Algerian Dinar/Dinaro Algerino/12
Currency: South African Rand/Rand Sudafricano/710
Currency: Burundian Franc/Franco del Burundi/108
Currency: Bangladeshi Taka/Taka Bangladese/50
Currency: Paraguayan Guarani/Guarani del Paraguay/600
Currency: XSU/XSU/994
Currency: Peruvian Nuevo Sol/Sol Nuevo Peruviano/604
Currency: Ghanaian Cedi (1979-2007)/Cedi del Ghana/288
Currency: North Korean Won/Won Nordcoreano/408
Currency: Slovenian Tolar/Tallero Sloveno/705
Currency: Philippine Peso/Peso delle Filippine/608
Currency: Mauritanian Ouguiya/Ouguiya della Mauritania/478
Currency: Unknown Currency/Nessuna valuta/999
Currency: Azerbaijani Manat (1993-2006)/Manat Azero (1993-2006)/31
Currency: Cayman Islands Dollar/Dollaro delle Isole Cayman/136
Currency: Croatian Kuna/Kuna Croata/191
Currency: Botswanan Pula/Pula del Botswana/72
Currency: Saint Helena Pound/Sterlina di Sant’Elena/654
Currency: AYM/AYM/945
Currency: Ugandan Shilling/Scellino Ugandese/800
Currency: Austrian Schilling/Scellino Austriaco/40
Currency: Malaysian Ringgit/Ringgit della Malesia/458
Currency: French Gold Franc/Franco Oro Francese/0
Currency: Irish Pound/Sterlina irlandese/372
Currency: Vanuatu Vatu/Vatu di Vanuatu/548
Currency: Serbian Dinar/Dinaro serbo/941
Currency: Iranian Rial/Rial Iraniano/364
Currency: Timorese Escudo/Escudo di Timor/626
Currency: Mexican Investment Unit/Unidad de Inversion (UDI) Messicana/979
Currency: Iraqi Dinar/Dinaro Iracheno/368
Currency: Romanian Leu (1952-2006)/Leu della Romania/946
Currency: Moldovan Leu/Leu Moldavo/498
Currency: Slovak Koruna/Corona Slovacca/703
Currency: Israeli New Sheqel/Nuovo sheqel israeliano/376
Currency: Polish Zloty/Zloty Polacco/985
Currency: Seychellois Rupee/Rupia delle Seychelles/690
Currency: European Unit of Account (XBC)/Unità di acconto europea (XBC)/957
Currency: Yugoslavian New Dinar (1994-2002)/Dinaro Noviy Yugoslavo/891
Currency: Macedonian Denar/Dinaro Macedone/807
Currency: Belarusian Ruble/Rublo Bielorussia/974
Currency: Egyptian Pound/Sterlina Egiziana/818
Currency: Hong Kong Dollar/Dollaro di Hong Kong/344
Currency: Guyanaese Dollar/Dollaro della Guyana/328
Currency: Bosnia-Herzegovina Convertible Mark/Marco Conv. Bosnia-Erzegovina/977
Currency: Thai Baht/Baht Tailandese/764
Currency: Kuwaiti Dinar/Dinaro Kuwaitiano/414
Currency: Kenyan Shilling/Scellino Keniota/404
Currency: Icelandic Króna/Corona Islandese/352
Currency: Falkland Islands Pound/Sterlina delle Falkland/238
Currency: Angolan Kwanza/Kwanza Angolano/973
Currency: Bulgarian Hard Lev/Lev Bulgaro/100
Currency: Malagasy Ariary/Ariary Malgascio/969
Currency: Surinamese Dollar/Dollaro surinamese/968
Currency: Dominican Peso/Peso Dominicano/214
Currency: Tongan Pa?anga/Pa?anga di Tonga/776
Currency: Papua New Guinean Kina/Kina della Papua Nuova Guinea/598
Currency: Cape Verdean Escudo/Escudo del Capo Verde/132
Currency: Namibian Dollar/Dollaro Namibiano/516
Currency: Uruguayan Peso/Peso Uruguayo uruguaiano/858
Currency: Ethiopian Birr/Birr Etiopico/230
Currency: Trinidad and Tobago Dollar/Dollaro di Trinidad e Tobago/780
Currency: Salvadoran Colón/Colón Salvadoregno/222
Currency: Brazilian Real/Real Brasiliano/986
Currency: Silver/Argento/961
Currency: Tajikistani Somoni/Somoni del Tajikistan/972
Currency: European Composite Unit/Unità composita europea/955
Currency: Lithuanian Litas/Lita Lituana/440
Currency: Estonian Kroon/Corona dell’Estonia/233
Currency: Platinum/Platinum/962
Currency: Haitian Gourde/Gourde Haitiano/332
Currency: Belarusian New Ruble (1994-1999)/Nuovo Rublo Bielorussia (1994-1999)/112
Currency: South Korean Won/Won Sudcoreano/410
Currency: Azerbaijani Manat/Azerbaijani Manat/944
Currency: Nepalese Rupee/Rupia Nepalese/524
Currency: Cambodian Riel/Riel Cambogiano/116
Currency: Zambian Kwacha/Kwacha dello Zambia/894
Currency: New Taiwan Dollar/Nuovo dollaro taiwanese/901
Currency: CFA Franc BEAC/Franco CFA BEAC/950
Currency: Cypriot Pound/Sterlina Cipriota/196
Currency: Afghan Afghani/Afgani/971
Currency: Aruban Florin/Fiorino di Aruba/533
Currency: Canadian Dollar/Dollaro Canadese/124
Currency: Mozambican Metical (1980-2006)/Mozambican Metical (1980-2006)/508
Currency: Ghanaian Cedi/Cedi ghanese/936
Currency: German Mark/Marco Tedesco/276
Currency: Swedish Krona/Corona Svedese/752

В этом сообщении в блоге кратко рассматриваются новый метод уровня класса и три новых метода уровня экземпляра, добавленных в класс Currency.