Class Currency

All Implemented Interfaces:
Serializable

public class Currency extends DerivedUnit<Money>

This class represents a currency Unit. Currencies are a special form of DerivedUnit, conversions between currencies is possible if their respective exchange rates have been set and the conversion factor can be changed dynamically.

Quantities stated in Currency are usually instances of Money.

By default, the label associated to a currency is its ISO-4217 code (see the ISO 4217 maintenance agency for a table of currency codes). An application may change this default using the UnitFormat.label(String) method. For example:[code] UnitFormat.getStandardInstance().label(Currency.EUR, "€"); UnitFormat.getStandardInstance().label(Currency.GBP, "£"); UnitFormat.getStandardInstance().label(Currency.JPY, "¥"); UnitFormat.getStandardInstance().label(Currency.USD, "$"); [/code]

See Also:
  • Field Details

    • AUD

      public static final Currency AUD
      The Australian Dollar currency unit.
    • CAD

      public static final Currency CAD
      The Canadian Dollar currency unit.
    • CNY

      public static final Currency CNY
      The China Yan currency.
    • EUR

      public static final Currency EUR
      The Euro currency.
    • GBP

      public static final Currency GBP
      The British Pound currency.
    • JPY

      public static final Currency JPY
      The Japanese Yen currency.
    • KRW

      public static final Currency KRW
      The Korean Republic Won currency.
    • TWD

      public static final Currency TWD
      The Taiwanese dollar currency.
    • USD

      public static final Currency USD
      The United State dollar currency.
  • Constructor Details

    • Currency

      public Currency(String code)
      Creates the currency unit for the given currency code. See the ISO 4217 maintenance agency for more information, including a table of currency codes.
      Parameters:
      code - the ISO-4217 code of the currency (e.g. "EUR", "USD", "JPY").
      Throws:
      IllegalArgumentException - if the specified code is not an ISO-4217 code.
  • Method Details

    • getCode

      public String getCode()
      Returns the currency code for this currency.
      Returns:
      the ISO-4217 code of the currency (e.g. "EUR", "USD", "JPY").
    • getDefaultFractionDigits

      public int getDefaultFractionDigits()
      Returns the default number of fraction digits used with this currency unit. For example, the default number of fraction digits for the EUR is 2, while for the JPY (Yen) it's 0. This method can be overriden for custom currencies returning values different from 2.
      Returns:
      the default number of fraction digits for this currency.
    • setReferenceCurrency

      public static void setReferenceCurrency(Currency currency)
      Sets the reference currency (context-local). Changing the reference currency clears all the exchange rates previously set.
      Parameters:
      currency - the new reference currency.
      See Also:
      • LocalContext
    • getReferenceCurrency

      public static Currency getReferenceCurrency()
      Returns the currency used as reference when setting the exchange rate. By default, the reference currency is the currency for the default country locale.
      Returns:
      the reference currency.
      See Also:
    • setExchangeRate

      public void setExchangeRate(double refAmount)
      Sets the exchange rate of this Currency relatively to the reference currency. Setting the exchange rate allows for conversion between Money stated in different currencies. For example:
           Currency.setReferenceCurrency(Currency.USD);
           Currency.EUR.setExchangeRate(1.17); // 1.0 € = 1.17 $
       
      Parameters:
      refAmount - the amount stated in the getReferenceCurrency() equals to one unit of this Currency.
      See Also:
    • getExchangeRate

      public double getExchangeRate()
      Returns the exchange rate for this Currency.
      Returns:
      the amount stated in the getReferenceCurrency() equals to one unit of this Currency.
      Throws:
      ConversionException - if the exchange rate has not be set for this Currency.
    • equals

      public boolean equals(Object obj)
      Description copied from class: Unit
      Indicates if the specified unit can be considered equals to the one specified.
      Specified by:
      equals in class Unit<Money>
      Parameters:
      obj - the object to compare to.
      Returns:
      true if this unit is considered equal to that unit; false otherwise.
    • hashCode

      public int hashCode()
      Description copied from class: Unit
      Returns the hash code for this unit.
      Specified by:
      hashCode in class Unit<Money>
      Returns:
      this unit hashcode value.
    • getStandardUnit

      public Unit<? super Money> getStandardUnit()
      Description copied from class: Unit
      Returns the base unit, alternate unit or product of base units and alternate units this unit is derived from. The standard unit identifies the "type" of quantity for which this unit is employed. For example:[code] boolean isAngularVelocity(Unit<?> u) { return u.getStandardUnit().equals(RADIAN.divide(SECOND)); } assert(REVOLUTION.divide(MINUTE).isAngularVelocity()); [/code]

      Note: Having the same system unit is not sufficient to ensure that a converter exists between the two units (e.g. °C/m and K/m).

      Specified by:
      getStandardUnit in class Unit<Money>
      Returns:
      the system unit this unit is derived from.
    • toStandardUnit

      public UnitConverter toStandardUnit()
      Description copied from class: Unit
      Returns the converter from this unit to its system unit.
      Specified by:
      toStandardUnit in class Unit<Money>
      Returns:
      this.getConverterTo(this.getSystemUnit())