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:
    setExchangeRate(double), Serialized Form
    • Field Detail

      • 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 Detail

      • 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 Detail

      • 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(double)
      • 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:
        getReferenceCurrency()
      • 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())