モジュール java.base
パッケージ 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を構築します。
    • メソッドのサマリー

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

      • 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の文字列表現
      • equals

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

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

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

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