クラスUUID

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

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

このクラスは、主にLeach-SalzバリアントのUUIDを操作するために設計されていますが、他のバリアントのUUIDの作成もサポートしています。

形式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でのみ有効です。

UUIDを作成するためのUUID形式、レイアウト、アルゴリズムなど、完全な仕様については、 RFC 9562: Universally Unique Identifier (UUID)を参照してください。

UUIDには、それぞれバージョン番号で識別される8つの定義済タイプがあります。時間ベース(バージョン1)、DCEセキュリティ(バージョン2)、MD5を使用した名前ベース(バージョン3)、ランダムに生成された名前ベース(バージョン4)、SHA-1を使用した名前ベース(バージョン5)、時間ベースの順序変更(バージョン6)、Unixエポックの時間ベース(バージョン7)およびカスタム定義のレイアウト(バージョン8)です。

導入されたバージョン:
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
    ofEpochMillis(long timestamp)
    指定されたUnixエポック・タイムスタンプからタイプ7 UUID (UUIDv7) UUIDを作成します。
    static UUID
    タイプ4 (擬似ランダム生成) UUIDを取得するためのstaticファクトリ。
    long
    このUUIDに関連したタイムスタンプ値
    このUUIDを表すStringオブジェクトを返します。
    int
    このUUIDに関連付けられた形式番号です。
    int
    このUUIDに関連付けられたバージョン番号です。

    クラスオブジェクトで宣言されたメソッド

    clone, finalize, getClass, notify, notifyAll, wait, wait, wait
    修飾子と型
    メソッド
    説明
    protected Object
    このオブジェクトのコピーを作成して、返します。
    protected void
    削除予定のため非推奨: このAPI要素は、将来のバージョンで削除される可能性があります。
    最終決定は非推奨であり、将来のリリースで削除される可能性があります。
    final Class<?>
    このObjectの実行時クラスを返します。
    final void
    このオブジェクトのモニターで待機中のスレッドを1つ再開します。
    final void
    このオブジェクトのモニターで待機中のすべてのスレッドを再開します。
    final void
    現在のスレッドが目覚めるまで待機します。通常、notifiedまたはinterruptedです。
    final void
    wait(long timeoutMillis)
    現在のスレッドは、通常、notifiedまたはinterruptedであるか、一定のリアルタイムが経過するまで、目覚めるまで待機します。
    final void
    wait(long timeoutMillis, int nanos)
    現在のスレッドは、通常、notifiedまたはinterruptedであるか、一定のリアルタイムが経過するまで、目覚めるまで待機します。
  • コンストラクタの詳細

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

      public static UUID ofEpochMillis(long timestamp)
      指定されたUnixエポック・タイムスタンプからタイプ7 UUID (UUIDv7) UUIDを作成します。 返されるUUIDには、最初の6バイトに指定されたtimestampが続き、UUIDv7を表すバージョンおよびバリアント・ビットが続き、残りのバイトには暗号学的に強力な擬似乱数ジェネレータからのランダム・データが含まれます。
      APIのノート:
      UUIDv7値は、最上位の48ビットにUnixタイムスタンプをミリ秒単位で割り当て、必要なバージョン(4ビット)とバリアント(2ビット)を割り当て、残りの74ビットをランダム・ビットで埋めることによって作成されます。 そのため、このメソッドは、48ビットに収まらないtimestamp値を拒否します。

      単調性(後続の各値が最後より大きい)は、UUIDv7値の主要な特性です。 これは、timestamp値がUUIDの一部であるためです。 モノトニックUUIDv7値を生成するこのメソッドのコール元は、指定されたtimestamp値が単調であることを確認する必要があります。

      パラメータ:
      timestamp - 1970年1月1日(UTC)午前0時以降の、うるう秒数。
      戻り値:
      指定されたtimestampを使用して構築されたUUID
      スロー:
      IllegalArgumentException - タイムスタンプが負または(1L << 48) - 1より大きい場合
      導入されたバージョン:
      26
    • 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
      • 7 Unixエポック時間ベースのUUID
      戻り値:
      このUUIDのバージョン番号
    • variant

      public int variant()
      このUUIDに関連付けられた形式番号です。 形式番号は、このUUIDのレイアウトを示します。 各形式番号の意味を、次に示します。
      • 0 NCS下位互換性を維持するために予約されている
      • 2 IETF RFC 9562 (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