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

クラスUUID

java.lang.Object
java.util.UUID
すべての実装されたインタフェース:
Serializable, Comparable<UUID>

public final class UUID extends Object implements Serializable, Comparable<UUID>
不変のUUID (universally unique identifier)を表すクラスです。 UUIDは、128ビット値を表します。

これらのグローバル識別子には、さまざまな形式が存在します。 コンストラクタを使用すれば任意の形式のUUIDを作成できますが、このクラスのメソッドはLeach-Salz形式の操作用メソッドです。

形式2 (Leach-Salz) UUIDのレイアウトは、次のとおりです。最上位のlongは、次の符号なしフィールドで構成されます。

 0xFFFFFFFF00000000 time_low
 0x00000000FFFF0000 time_mid
 0x000000000000F000 version
 0x0000000000000FFF time_hi
 
最下位のlongは、次の符号なしフィールドで構成されます。
 0xC000000000000000 variant
 0x3FFF000000000000 clock_seq
 0x0000FFFFFFFFFFFF node
 

variantフィールドには、UUIDのレイアウトを識別する値が含まれます。 前述のビット・レイアウトは、Leach-Salz形式を示す形式値2を保持する UUIDでのみ有効です。

versionフィールドには、この UUIDの型を示す値が含まれます。 UUIDには4種類の基本タイプがあります。時間ベースUUID、DCEセキュリティUUID、名前ベースUUID、およびランダム生成UUIDです。 これらの型は、version値1、2、3、および4をそれぞれ保持します。

UUIDの作成に使用されるアルゴリズムなどの詳細については、「RFC 4122: A Universally Unique IDentifier (UUID) URN Namespace」のセクション4.2「Algorithms for Creating a Time-Based UUID」を参照してください。

導入されたバージョン:
1.5
関連項目:
  • コンストラクタのサマリー

    コンストラクタ
    コンストラクタ
    説明
    UUID(long mostSigBits, long leastSigBits)
    指定されたデータを使用して、新しいUUIDを構築します。
  • メソッドのサマリー

    修飾子と型
    メソッド
    説明
    int
    このUUIDに関連したクロック・シーケンス値
    int
    このUUIDを指定されたUUIDと比較します。
    boolean
    このオブジェクトを指定されたオブジェクトと比較します。
    static UUID
    toString()メソッドに説明されているように、文字列標準表現からUUIDを作成します。
    long
    このUUIDの128ビット値の最下位64ビットを返します。
    long
    このUUIDの128ビット値の最上位64ビットを返します。
    int
    このUUIDのハッシュ・コードを返します。
    static UUID
    nameUUIDFromBytes(byte[] name)
    指定されたバイト配列に基づく、タイプ3 (名前ベース) UUID取得用のStaticファクトリです。
    long
    このUUIDに関連したノード値
    static UUID
    タイプ4 (擬似ランダム生成) UUIDを取得するためのstaticファクトリ。
    long
    このUUIDに関連したタイムスタンプ値
    このUUIDを表すStringオブジェクトを返します。
    int
    このUUIDに関連付けられた形式番号です。
    int
    このUUIDに関連付けられたバージョン番号です。

    クラス java.lang.Objectで宣言されたメソッド

    clone, finalize, getClass, notify, notifyAll, wait, wait, wait
  • コンストラクタの詳細

    • UUID

      public UUID(long mostSigBits, long leastSigBits)
      指定されたデータを使用して新しいUUIDを構築します。 mostSigBits UUIDの最上位64ビットに使用され、leastSigBitsUUIDの最下位64ビットになります。
      パラメータ:
      mostSigBits - UUIDの最上位ビット
      leastSigBits - UUIDの最下位ビット
  • メソッドの詳細

    • randomUUID

      public static UUID randomUUID()
      タイプ4 (擬似ランダム生成) UUIDを取得するためのstaticファクトリ。 このUUIDは、暗号強度の高い擬似乱数ジェネレータを使って生成されます。
      戻り値:
      ランダムに生成されたUUID
    • nameUUIDFromBytes

      public static UUID nameUUIDFromBytes(byte[] name)
      指定されたバイト配列に基づく、タイプ3 (名前ベース) UUID取得用のStaticファクトリです。
      パラメータ:
      name - UUIDの構築に使用するバイト配列
      戻り値:
      指定された配列から生成されたUUID
    • fromString

      public static UUID fromString(String name)
      toString()メソッドに説明されているように、文字列標準表現からUUIDを作成します。
      パラメータ:
      name - UUIDを指定する文字列
      戻り値:
      指定値を使用したUUID
      例外:
      IllegalArgumentException - 名前がtoString()の文字列表現に準拠していない場合
    • getLeastSignificantBits

      public long getLeastSignificantBits()
      このUUIDの128ビット値の最下位64ビットを返します。
      戻り値:
      このUUIDの128ビット値の最下位64ビット
    • getMostSignificantBits

      public long getMostSignificantBits()
      このUUIDの128ビット値の最上位64ビットを返します。
      戻り値:
      このUUIDの128ビット値の最上位64ビット
    • version

      public int version()
      このUUIDに関連付けられたバージョン番号です。 バージョン番号は、このUUIDの生成方法を示します。 各バージョン番号の意味を、次に示します。
      • 1時間ベースのUUID
      • 2 DCEセキュリティUUID
      • 3名前ベースのUUID
      • 4ランダムに生成されたUUID
      戻り値:
      このUUIDのバージョン番号
    • variant

      public int variant()
      このUUIDに関連付けられた形式番号です。 形式番号は、このUUIDのレイアウトを示します。 各形式番号の意味を、次に示します。
      • 0 NCS下位互換性を維持するために予約されている
      • 2 IETF RFC 4122 (Leach-Salz)。このクラスが使用
      • 6予約済み。Microsoft Corporationの下位互換性維持
      • 7将来の定義のために予約済み
      戻り値:
      このUUIDの形式番号
    • timestamp

      public long timestamp()
      このUUIDに関連したタイムスタンプ値

      60ビットのタイムスタンプ値が、このUUIDのtime_low、time_mid、およびtime_hiフィールドから構築されます。 結果として得られるタイムスタンプは、1582年10月15日UTCの深夜零時から100ナノ秒単位で計測された値になります。

      タイムスタンプ値は、時間ベースのUUID (バージョン・タイプ1)でのみ有意性があります。 このUUIDが時間ベースのUUIDではない場合、このメソッドはUnsupportedOperationExceptionをスローします。

      戻り値:
      このUUIDのタイムスタンプ。
      例外:
      UnsupportedOperationException - このUUIDがバージョン1 UUIDではない場合
    • clockSequence

      public int clockSequence()
      このUUIDに関連したクロック・シーケンス値

      14ビットのクロック・シーケンス値は、このUUIDのクロック・シーケンス・フィールドから構築されます。 クロック・シーケンス・フィールドは、時間ベースUUIDの一時的な一意性を保証するために使用されます。

      clockSequence値は、時間ベースのUUID (バージョン・タイプ1)でのみ有意性があります。 このUUIDが時間ベースのUUIDではない場合、このメソッドはUnsupportedOperationExceptionをスローします。

      戻り値:
      このUUIDのクロック・シーケンス
      例外:
      UnsupportedOperationException - このUUIDがバージョン1 UUIDではない場合
    • node

      public long node()
      このUUIDに関連したノード値

      48ビットのノード値は、このUUIDのノード・フィールドから構築されます。 このフィールドは、空間の一意性を保証するため、このUUIDを生成したマシンのIEEE 802アドレスを保持することを目的としています。

      ノード値は、時間ベースのUUID (バージョン・タイプ1)でのみ有意性があります。 このUUIDが時間ベースのUUIDではない場合、このメソッドはUnsupportedOperationExceptionをスローします。

      戻り値:
      このUUIDのノード値
      例外:
      UnsupportedOperationException - このUUIDがバージョン1 UUIDではない場合
    • toString

      public String toString()
      このUUIDを表すStringオブジェクトを返します。

      UUID文字列表現は、次のBNFで記述されるとおりです。

       
       UUID                   = <time_low> "-" <time_mid> "-"
                                <time_high_and_version> "-"
                                <variant_and_sequence> "-"
                                <node>
       time_low               = 4*<hexOctet>
       time_mid               = 2*<hexOctet>
       time_high_and_version  = 2*<hexOctet>
       variant_and_sequence   = 2*<hexOctet>
       node                   = 6*<hexOctet>
       hexOctet               = <hexDigit><hexDigit>
       hexDigit               =
             "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9"
             | "a" | "b" | "c" | "d" | "e" | "f"
             | "A" | "B" | "C" | "D" | "E" | "F"
       

      オーバーライド:
      toString、クラスObject
      戻り値:
      このUUIDの文字列表現
    • hashCode

      public int hashCode()
      このUUIDのハッシュ・コードを返します。
      オーバーライド:
      hashCode、クラスObject
      戻り値:
      このUUIDのハッシュ・コード値
      関連項目:
    • equals

      public boolean equals(Object obj)
      このオブジェクトを指定されたオブジェクトと比較します。 結果が trueになるのは、引数がnullではなく、UUIDオブジェクトであり、このUUIDと同じ形式および同じ値(ビット対ビット)を保持する場合だけです。
      オーバーライド:
      equals、クラスObject
      パラメータ:
      obj -比較対象のオブジェクト
      戻り値:
      オブジェクトが同じである場合はtrue、それ以外の場合はfalse
      関連項目:
    • compareTo

      public int compareTo(UUID val)
      このUUIDを指定されたUUIDと比較します。

      2つのUUIDで異なっている最上位フィールドが、最初のUUIDの方が大きい場合、最初のUUIDが2番目のものより大きいと見なされます。

      定義:
      compareTo、インタフェースComparable<UUID>
      パラメータ:
      val - このUUIDと比較するUUID
      戻り値:
      このUUIDvalより小さい場合は -1、等しい場合は0、大きい場合は1