モジュール java.base
パッケージ java.util

クラスCurrency

java.lang.Object
java.util.Currency
すべての実装されたインタフェース:
Serializable

public final class Currency extends Object implements Serializable
通貨を表します。 通貨は、ISO 4217通貨コードで識別されます。 詳細は、ISOのWebサイトを参照してください。

クラスは、指定された通貨のCurrencyインスタンスが複数存在しないように設計されています。 したがって、クラスにはpublicコンストラクタがありません。 getInstanceメソッドを使用して、Currencyインスタンスを取得します。

ユーザーは、システム・プロパティjava.util.currency.dataを使用して、Javaランタイム通貨データを置き換えられます。 このシステム・プロパティが定義されている場合、その値はプロパティ・ファイルの場所であり、そのファイル内容はISO 3166国コードとISO 4217通貨データからなるキーと値のペアです。 値の部分はISO 4217の3つの通貨の値、つまり、英字コード、数値コード、マイナー単位で構成されます。 これら3つのISO 4217の値はカンマで区切られています。 「#」で始まる行はコメント行としてみなされます。 ユーザーが切換え日を指定して新しいデータが有効になる時期を示す必要がある場合は、通貨エントリごとにオプションのUTCタイムスタンプを指定できます。 そのタイムスタンプは通貨プロパティの最後に追加され、区切り文字としてコンマを使用します。 UTC日付スタンプが存在し、有効である場合、JREでは、現在のUTC日付が、クラスのロード時に指定された日付よりも後にあるときにのみ、新しい通貨プロパティを使用します。 タイムスタンプのフォーマットは、ISO 8601形式の'yyyy-MM-dd'T'HH:mm:ss'である必要があります。 たとえば、

#Sample currency properties
JP=JPZ,999,0

日本の通貨データがこれに置き換わります。 JPZが他の国で参照される既存のISO 4217通貨コードの1つである場合、既存のJPZ通貨データは指定された数値コードとマイナー・ユニット値で更新されます。

#Sample currency properties with cutover date
JP=JPZ,999,0,2014-01-01T00:00:00

Currencyクラスが2014年1月1日00:00:00 GMTより後にロードされる場合は、日本の通貨データがこれに置き換わります。

構文的に不正な形式のエントリが検出された場合、そのエントリは無視され、ファイル内の残りのエントリは処理されます。 たとえば、国コード・エントリが重複して存在する場合、そのCurrencyの通貨情報の動作は未定義であり、ファイル内の残りのエントリが処理されます。

通貨コードが同じでも数値コードまたはマイナー単位が異なる複数のプロパティ・エントリが検出された場合、それらのエントリは無視され、ファイルの残りのエントリが処理されます。

Currencyや金銭的な値を扱うときは、浮動小数点数とその操作をよりうまく処理できるので、BigDecimalクラスを使用することをお勧めします。

導入されたバージョン:
1.4
関連項目:
  • メソッドの詳細

    • getInstance

      public static Currency getInstance(String currencyCode)
      指定された通貨コードのCurrencyインスタンスを返します。
      パラメータ:
      currencyCode - 通貨のISO 4217コード
      戻り値:
      指定した通貨コードのCurrencyインスタンス
      例外:
      NullPointerException - currencyCodeがnullである場合
      IllegalArgumentException - currencyCodeが、サポートされたISO 4217コードでない場合。
    • getInstance

      public static Currency getInstance(Locale locale)
      指定されたロケールの国のCurrencyインスタンスを返します。 ロケールの言語コンポーネントおよびバリアント・コンポーネントは無視されます。 国によって通貨が変更されるので、時の経過とともに結果が変わる場合があります。 たとえば、欧州通貨統合のオリジナル・メンバーの国々の場合、2001年12月31日までは各国の従来の通貨、そして各国の現地時間の2002年1月1日からはメソッドはEuroを返します。

      指定されたlocaleに"cu"および/または"rg" 「Unicode拡張」が含まれている場合、このメソッドから返されたインスタンスは、それらの拡張で指定された値を反映します。 "cu"と"rg"の両方が指定されている場合、"cu"拡張子の通貨は、"rg"拡張子の暗黙のものよりも優先されます。

      メソッドは、南極大陸などの通貨を持たない地域についてはnullを返します。

      パラメータ:
      locale - Currencyインスタンスが必要な国のロケール
      戻り値:
      指定されたロケールの国のCurrencyインスタンス、またはnull
      例外:
      NullPointerException - localenullである場合
      IllegalArgumentException - 指定されたlocaleの国がサポートされたISO 3166国コードでない場合。
    • getAvailableCurrencies

      public static Set<Currency> getAvailableCurrencies()
      利用可能な通貨のセットを取得します。 返される通貨のセットには、利用可能なすべての通貨が含まれ、廃止されたISO 4217コードに相当する通貨が含まれることもあります。 このセットは、実行時に利用可能な通貨に影響を及ぼさないように変更できます。
      戻り値:
      利用可能な通貨のセット。 実行時に利用可能な通貨が存在しない場合、空のセットが返されます。
      導入されたバージョン:
      1.7
    • getCurrencyCode

      public String getCurrencyCode()
      この通貨のISO 4217通貨コードを取得します。
      戻り値:
      この通貨のISO 4217通貨コード。
    • getSymbol

      public String getSymbol()
      デフォルトのDISPLAYロケールについて、その通貨の記号を取得します。 たとえば、USドルについては、デフォルトのロケールがUSの場合は、記号は「$」になります。ほかのロケールの場合は、記号は「US$」になります。 記号を判断できない場合は、ISO 4217通貨コードを返します。

      デフォルトのDISPLAYロケールに"rg" (リージョン・オーバーライド) 「Unicode拡張」が含まれている場合、このメソッドから返されたシンボルはその拡張で指定された値を反映します。

      これは、getSymbol(Locale.getDefault(Locale.Category.DISPLAY))を呼び出すことと同等です。

      戻り値:
      デフォルトのDISPLAYロケールでのこの通貨の記号
    • getSymbol

      public String getSymbol(Locale locale)
      指定されたロケールについて、その通貨の記号を取得します。 たとえば、USドルについては、指定されたロケールがUSの場合は、記号は「$」になります。ほかのロケールの場合は、記号は「US$」になります。 記号を判断できない場合は、ISO 4217通貨コードを返します。

      指定されたlocaleに"rg" (リージョン・オーバーライド) 「Unicode拡張」が含まれている場合、このメソッドから返されるシンボルは、その拡張で指定された値を反映します。

      パラメータ:
      locale - この通貨の表示名が必要なロケール
      戻り値:
      指定されたロケールでのこの通貨の記号
      例外:
      NullPointerException - localeがnullである場合
    • getDefaultFractionDigits

      public int getDefaultFractionDigits()
      この通貨で使用される小数のデフォルトの桁数を取得します。 小数点の桁数は、通貨のISO 4217マイナー単位と同じです。 たとえば、ユーロの場合は小数のデフォルトの桁数は2で、日本円の場合は0です。 IMFの特別引出権のような、擬似通貨の場合は、-1を返します。
      戻り値:
      この通貨で使用される小数のデフォルトの桁数
    • getNumericCode

      public int getNumericCode()
      この通貨のISO 4217数値コードを返します。
      戻り値:
      その通貨のISO 4217数値コード
      導入されたバージョン:
      1.7
    • getNumericCodeAsString

      public String getNumericCodeAsString()
      この通貨の3桁のISO 4217数値コードをStringとして返します。 intとして数値コードを返すgetNumericCode()とは異なり、このメソッドは常に数値コードを3桁の文字列として返します。たとえば32の数値が"032"として返され、6の数値が"006"として返されます。
      戻り値:
      この通貨の3桁のISO 4217数値コードをString
      導入されたバージョン:
      9
    • getDisplayName

      public String getDisplayName()
      デフォルトのDISPLAYロケールでこの通貨を表示するのに適した名前を取得します。 デフォルトのロケールで適した表示名が見つからない場合、ISO 4217通貨コードが返されます。

      これは、getDisplayName(Locale.getDefault(Locale.Category.DISPLAY))を呼び出すことと同等です。

      戻り値:
      デフォルトのDISPLAYロケールでのこの通貨の表示名
      導入されたバージョン:
      1.7
    • getDisplayName

      public String getDisplayName(Locale locale)
      指定されたロケールでこの通貨を表示するのに適した名前を取得します。 指定されたロケールで適した表示名が見つからない場合、ISO 4217通貨コードが返されます。
      パラメータ:
      locale - この通貨の表示名が必要なロケール
      戻り値:
      指定されたロケールでのこの通貨の表示名
      例外:
      NullPointerException - localeがnullである場合
      導入されたバージョン:
      1.7
    • toString

      public String toString()
      その通貨のISO 4217通貨コードを返します。
      オーバーライド:
      toString、クラスObject
      戻り値:
      その通貨のISO 4217通貨コード