java.util
Class Currency

java.lang.Object
  extended byjava.util.Currency
All Implemented Interfaces:
Serializable

public final class Currency
extends Object
implements Serializable

Represents a currency. Currencies are identified by their ISO 4217 currency codes. See the ISO 4217 maintenance agency for more information, including a table of currency codes.

The class is designed so that there's never more than one Currency instance for any given currency. Therefore, there's no public constructor. You obtain a Currency instance using the getInstance methods.

Since:
1.4
See Also:
Serialized Form

Field Summary
private static int A_TO_Z
           
private static int COUNTRY_TYPE_MASK
           
private static int COUNTRY_WITHOUT_CURRENCY_ENTRY
           
private  String currencyCode
          ISO 4217 currency code for this currency.
private  int defaultFractionDigits
          Default fraction digits for this currency.
private static HashMap instances
           
private static int INVALID_COUNTRY_ENTRY
           
(package private) static String mainTable
           
(package private) static String otherCurrencies
           
(package private) static int[] otherCurrenciesDFD
           
(package private) static long[] scCutOverTimes
           
(package private) static String[] scNewCurrencies
           
(package private) static int[] scNewCurrenciesDFD
           
(package private) static String[] scOldCurrencies
           
(package private) static int[] scOldCurrenciesDFD
           
private static int SIMPLE_CASE_COUNTRY_DEFAULT_DIGITS_MASK
           
private static int SIMPLE_CASE_COUNTRY_DEFAULT_DIGITS_SHIFT
           
private static int SIMPLE_CASE_COUNTRY_FINAL_CHAR_MASK
           
private static int SIMPLE_CASE_COUNTRY_MASK
           
private static int SPECIAL_CASE_COUNTRY_INDEX_DELTA
           
private static int SPECIAL_CASE_COUNTRY_INDEX_MASK
           
private static int SPECIAL_CASE_COUNTRY_MASK
           
 
Constructor Summary
private Currency(String currencyCode, int defaultFractionDigits)
          Constructs a Currency instance.
 
Method Summary
 String getCurrencyCode()
          Gets the ISO 4217 currency code of this currency.
 int getDefaultFractionDigits()
          Gets the default number of fraction digits used with this currency.
static Currency getInstance(Locale locale)
          Returns the Currency instance for the country of the given locale.
static Currency getInstance(String currencyCode)
          Returns the Currency instance for the given currency code.
private static Currency getInstance(String currencyCode, int defaultFractionDigits)
           
private static int getMainTableEntry(char char1, char char2)
          Gets the main table entry for the country whose country code consists of char1 and char2.
 String getSymbol()
          Gets the symbol of this currency for the default locale.
 String getSymbol(Locale locale)
          Gets the symbol of this currency for the specified locale.
private  Object readResolve()
          Resolves instances being deserialized to a single instance per currency.
 String toString()
          Returns the ISO 4217 currency code of this currency.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

currencyCode

private String currencyCode
ISO 4217 currency code for this currency.


defaultFractionDigits

private transient int defaultFractionDigits
Default fraction digits for this currency. Set from currency data tables.


instances

private static HashMap instances

mainTable

static String mainTable

scCutOverTimes

static long[] scCutOverTimes

scOldCurrencies

static String[] scOldCurrencies

scNewCurrencies

static String[] scNewCurrencies

scOldCurrenciesDFD

static int[] scOldCurrenciesDFD

scNewCurrenciesDFD

static int[] scNewCurrenciesDFD

otherCurrencies

static String otherCurrencies

otherCurrenciesDFD

static int[] otherCurrenciesDFD

A_TO_Z

private static final int A_TO_Z
See Also:
Constant Field Values

INVALID_COUNTRY_ENTRY

private static final int INVALID_COUNTRY_ENTRY
See Also:
Constant Field Values

COUNTRY_WITHOUT_CURRENCY_ENTRY

private static final int COUNTRY_WITHOUT_CURRENCY_ENTRY
See Also:
Constant Field Values

SIMPLE_CASE_COUNTRY_MASK

private static final int SIMPLE_CASE_COUNTRY_MASK
See Also:
Constant Field Values

SIMPLE_CASE_COUNTRY_FINAL_CHAR_MASK

private static final int SIMPLE_CASE_COUNTRY_FINAL_CHAR_MASK
See Also:
Constant Field Values

SIMPLE_CASE_COUNTRY_DEFAULT_DIGITS_MASK

private static final int SIMPLE_CASE_COUNTRY_DEFAULT_DIGITS_MASK
See Also:
Constant Field Values

SIMPLE_CASE_COUNTRY_DEFAULT_DIGITS_SHIFT

private static final int SIMPLE_CASE_COUNTRY_DEFAULT_DIGITS_SHIFT
See Also:
Constant Field Values

SPECIAL_CASE_COUNTRY_MASK

private static final int SPECIAL_CASE_COUNTRY_MASK
See Also:
Constant Field Values

SPECIAL_CASE_COUNTRY_INDEX_MASK

private static final int SPECIAL_CASE_COUNTRY_INDEX_MASK
See Also:
Constant Field Values

SPECIAL_CASE_COUNTRY_INDEX_DELTA

private static final int SPECIAL_CASE_COUNTRY_INDEX_DELTA
See Also:
Constant Field Values

COUNTRY_TYPE_MASK

private static final int COUNTRY_TYPE_MASK
See Also:
Constant Field Values
Constructor Detail

Currency

private Currency(String currencyCode,
                 int defaultFractionDigits)
Constructs a Currency instance. The constructor is private so that we can insure that there's never more than one instance for a given currency.

Method Detail

getInstance

public static Currency getInstance(String currencyCode)
Returns the Currency instance for the given currency code.

Parameters:
currencyCode - the ISO 4217 code of the currency
Returns:
the Currency instance for the given currency code
Throws:
NullPointerException - if currencyCode is null
IllegalArgumentException - if currencyCode is not a supported ISO 4217 code.

getInstance

private static Currency getInstance(String currencyCode,
                                    int defaultFractionDigits)

getInstance

public static Currency getInstance(Locale locale)
Returns the Currency instance for the country of the given locale. The language and variant components of the locale are ignored. The result may vary over time, as countries change their currencies. For example, for the original member countries of the European Monetary Union, the method returns the old national currencies until December 31, 2001, and the Euro from January 1, 2002, local time of the respective countries.

The method returns null for territories that don't have a currency, such as Antarctica.

Parameters:
locale - the locale for whose country a Currency instance is needed
Returns:
the Currency instance for the country of the given locale, or null
Throws:
NullPointerException - if locale or its country code is null
IllegalArgumentException - if the country of the given locale is not a supported ISO 3166 country code.

getCurrencyCode

public String getCurrencyCode()
Gets the ISO 4217 currency code of this currency.

Returns:
the ISO 4217 currency code of this currency.

getSymbol

public String getSymbol()
Gets the symbol of this currency for the default locale. For example, for the US Dollar, the symbol is "$" if the default locale is the US, while for other locales it may be "US$". If no symbol can be determined, the ISO 4217 currency code is returned.

Returns:
the symbol of this currency for the default locale

getSymbol

public String getSymbol(Locale locale)
Gets the symbol of this currency for the specified locale. For example, for the US Dollar, the symbol is "$" if the specified locale is the US, while for other locales it may be "US$". If no symbol can be determined, the ISO 4217 currency code is returned.

Parameters:
locale - the locale for which a display name for this currency is needed
Returns:
the symbol of this currency for the specified locale
Throws:
NullPointerException - if locale is null

getDefaultFractionDigits

public int getDefaultFractionDigits()
Gets the default number of fraction digits used with this currency. For example, the default number of fraction digits for the Euro is 2, while for the Japanese Yen it's 0. In the case of pseudo-currencies, such as IMF Special Drawing Rights, -1 is returned.

Returns:
the default number of fraction digits used with this currency

toString

public String toString()
Returns the ISO 4217 currency code of this currency.

Overrides:
toString in class Object
Returns:
the ISO 4217 currency code of this currency

readResolve

private Object readResolve()
Resolves instances being deserialized to a single instance per currency.


getMainTableEntry

private static int getMainTableEntry(char char1,
                                     char char2)
Gets the main table entry for the country whose country code consists of char1 and char2.