モジュール 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 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に関連付けられたバージョン番号です。

    クラス 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ではない場合
    • ノード

      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のハッシュ・コード値
      関連項目:
      Object.equals(java.lang.Object), System.identityHashCode(java.lang.Object)
    • 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