com.ibm.icu.util

Class Currency

Implemented Interfaces:
Serializable

public class Currency
extends MeasureUnit
implements Serializable

A class encapsulating a currency, as defined by ISO 4217. A Currency object can be created given a Locale or given an ISO 4217 code. Once created, the Currency object can return various data necessary to its proper display: The DecimalFormat class uses these data to display currencies.

Note: This class deliberately resembles java.util.Currency but it has a completely independent implementation, and adds features not present in the JDK.

Author:
Alan Liu

Field Summary

static int
LONG_NAME
Selector for ucurr_getName indicating the long name for a currency, such as "US Dollar" for USD.
static int
SYMBOL_NAME
Selector for getName() indicating a symbolic name for a currency, such as "$" for USD.

Constructor Summary

Currency(String theISOCode)
Constructs a currency object for the given ISO 4217 3-letter code.

Method Summary

boolean
equals(Object rhs)
Return true if rhs is a Currency instance, is non-null, and has the same currency code.
static Locale[]
getAvailableLocales()
Return an array of the locales for which a currency is defined.
static ULocale[]
getAvailableULocales()
Return an array of the ulocales for which a currency is defined.
String
getCurrencyCode()
Returns the ISO 4217 3-letter code for this currency object.
int
getDefaultFractionDigits()
Returns the number of the number of fraction digits that should be displayed for this currency.
static Currency
getInstance(Locale locale)
Returns a currency object for the default currency in the given locale.
static Currency
getInstance(String theISOCode)
Returns a currency object given an ISO 4217 3-letter code.
static Currency
getInstance(ULocale locale)
Returns a currency object for the default currency in the given locale.
ULocale
getLocale(ULocale.Type type)
Return the locale that was used to create this object, or null.
String
getName(Locale locale, int nameStyle, boolean[] isChoiceFormat)
Returns the display name for the given currency in the given locale.
String
getName(ULocale locale, int nameStyle, boolean[] isChoiceFormat)
Returns the display name for the given currency in the given locale.
double
getRoundingIncrement()
Returns the rounding increment for this currency, or 0.0 if no rounding is done by this currency.
String
getSymbol()
Convenience and compatibility override of getName that requests the symbol name.
String
getSymbol(Locale loc)
Convenience and compatibility override of getName that requests the symbol name.
String
getSymbol(ULocale uloc)
Convenience and compatibility override of getName that requests the symbol name.
int
hashCode()
Return a hashcode for this currency.
static String
parse(ULocale locale, String text, ParsePosition pos)
Attempt to parse the given string as a currency, either as a display name in the given locale, or as a 3-letter ISO 4217 code.
static Object
registerInstance(Currency currency, ULocale locale)
Registers a new currency for the provided locale.
String
toString()
Returns the ISO 4217 code for this currency.
static boolean
unregister(Object registryKey)
Unregister the currency associated with this key (obtained from registerInstance).

Field Details

LONG_NAME

public static final int LONG_NAME
Selector for ucurr_getName indicating the long name for a currency, such as "US Dollar" for USD.
Field Value:
1

SYMBOL_NAME

public static final int SYMBOL_NAME
Selector for getName() indicating a symbolic name for a currency, such as "$" for USD.
Field Value:
0

Constructor Details

Currency

protected Currency(String theISOCode)
Constructs a currency object for the given ISO 4217 3-letter code. This constructor assumes that the code is valid.
Parameters:
theISOCode - The iso code used to construct the currency.

Method Details

equals

public boolean equals(Object rhs)
Return true if rhs is a Currency instance, is non-null, and has the same currency code.

getAvailableLocales

public static Locale[] getAvailableLocales()
Return an array of the locales for which a currency is defined.
Returns:
an array of the available locales

getAvailableULocales

public static ULocale[] getAvailableULocales()
Return an array of the ulocales for which a currency is defined.
Returns:
an array of the available ulocales

getCurrencyCode

public String getCurrencyCode()
Returns the ISO 4217 3-letter code for this currency object.

getDefaultFractionDigits

public int getDefaultFractionDigits()
Returns the number of the number of fraction digits that should be displayed for this currency.
Returns:
a non-negative number of fraction digits to be displayed

getInstance

public static Currency getInstance(Locale locale)
Returns a currency object for the default currency in the given locale.
Parameters:
locale - the locale
Returns:
the currency object for this locale

getInstance

public static Currency getInstance(String theISOCode)
Returns a currency object given an ISO 4217 3-letter code.
Parameters:
theISOCode - the iso code
Returns:
the currency for this iso code

getInstance

public static Currency getInstance(ULocale locale)
Returns a currency object for the default currency in the given locale.

getLocale

public final ULocale getLocale(ULocale.Type type)
Return the locale that was used to create this object, or null. This may may differ from the locale requested at the time of this object's creation. For example, if an object is created for locale en_US_CALIFORNIA, the actual data may be drawn from en (the actual locale), and en_US may be the most specific locale that exists (the valid locale).

Note: This method will be obsoleted. The implementation is no longer locale-specific and so there is no longer a valid or actual locale associated with the Currency object. Until it is removed, this method will return the root locale.

Parameters:
type - type of information requested, either ULocale.VALID_LOCALE or ULocale.ACTUAL_LOCALE.
Returns:
the information specified by type, or null if this object was not constructed from locale data.

getName

public String getName(Locale locale,
                      int nameStyle,
                      boolean[] isChoiceFormat)
Returns the display name for the given currency in the given locale. For example, the display name for the USD currency object in the en_US locale is "$".
Parameters:
locale - locale in which to display currency
nameStyle - selector for which kind of name to return
isChoiceFormat - fill-in; isChoiceFormat[0] is set to true if the returned value is a ChoiceFormat pattern; otherwise it is set to false
Returns:
display string for this currency. If the resource data contains no entry for this currency, then the ISO 4217 code is returned. If isChoiceFormat[0] is true, then the result is a ChoiceFormat pattern. Otherwise it is a static string.

getName

public String getName(ULocale locale,
                      int nameStyle,
                      boolean[] isChoiceFormat)
Returns the display name for the given currency in the given locale. For example, the display name for the USD currency object in the en_US locale is "$".
Parameters:
locale - locale in which to display currency
nameStyle - selector for which kind of name to return
isChoiceFormat - fill-in; isChoiceFormat[0] is set to true if the returned value is a ChoiceFormat pattern; otherwise it is set to false
Returns:
display string for this currency. If the resource data contains no entry for this currency, then the ISO 4217 code is returned. If isChoiceFormat[0] is true, then the result is a ChoiceFormat pattern. Otherwise it is a static string.

getRoundingIncrement

public double getRoundingIncrement()
Returns the rounding increment for this currency, or 0.0 if no rounding is done by this currency.
Returns:
the non-negative rounding increment, or 0.0 if none

getSymbol

public String getSymbol()
Convenience and compatibility override of getName that requests the symbol name.
See Also:
getName

getSymbol

public String getSymbol(Locale loc)
Convenience and compatibility override of getName that requests the symbol name.
Parameters:
loc - the Locale for the symbol
See Also:
getName

getSymbol

public String getSymbol(ULocale uloc)
Convenience and compatibility override of getName that requests the symbol name.
Parameters:
uloc - the ULocale for the symbol
See Also:
getName

hashCode

public int hashCode()
Return a hashcode for this currency.

parse

public static String parse(ULocale locale,
                           String text,
                           ParsePosition pos)
Attempt to parse the given string as a currency, either as a display name in the given locale, or as a 3-letter ISO 4217 code. If multiple display names match, then the longest one is selected. If both a display name and a 3-letter ISO code match, then the display name is preferred, unless it's length is less than 3.
Parameters:
locale - the locale of the display names to match
text - the text to parse
pos - input-output position; on input, the position within text to match; must have 0 <= pos.getIndex() <32text.length(); on output, the position after the last matched character. If the parse fails, the position in unchanged upon output.
Returns:
the ISO 4217 code, as a string, of the best match, or null if there is no match

registerInstance

public static Object registerInstance(Currency currency,
                                      ULocale locale)
Registers a new currency for the provided locale. The returned object is a key that can be used to unregister this currency object.
Parameters:
currency - the currency to register
locale - the ulocale under which to register the currency
Returns:
a registry key that can be used to unregister this currency

toString

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

unregister

public static boolean unregister(Object registryKey)
Unregister the currency associated with this key (obtained from registerInstance).
Parameters:
registryKey - the registry key returned from registerInstance

Copyright (c) 2006 IBM Corporation and others.