模块 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) 的类。 UUID 代表一个 128 位的值。

这些全局标识符存在不同的变体。此类的方法用于操作 Leach-Salz 变体,尽管构造方法允许创建 UUID 的任何变体(如下所述)。

变体 2 (Leach-Salz) UUID 的布局如下:最重要的 long 由以下无符号字段组成:

 0xFFFFFFFF00000000 time_low
 0x00000000FFFF0000 time_mid
 0x000000000000F000 version
 0x0000000000000FFF time_hi
 
最低有效长由以下无符号字段组成:
 0xC000000000000000 variant
 0x3FFF000000000000 clock_seq
 0x0000FFFFFFFFFFFF node
 

variant 字段包含一个标识 UUID 布局的值。上述位布局仅对变体值为 2 的 UUID 有效,表示 Leach-Salz 变体。

version 字段包含一个描述此 UUID 类型的值。 UUID 有四种不同的基本类型:基于时间、DCE 安全、基于名称和随机生成的 UUID。这些类型的版本值分别为 1、2、3 和 4。

有关包括用于创建 UUID 的算法在内的更多信息,请参阅 RFC 4122:通用唯一标识符 (UUID) URN 命名空间 的第 4.2 节“用于创建基于时间的 UUID 的算法”。

自从:
1.5
参见:
  • 构造方法总结

    构造方法
    构造方法
    描述
    UUID(long mostSigBits, long leastSigBits)
    使用指定的数据构造一个新的 UUID
  • 方法总结

    修饰符和类型
    方法
    描述
    int
    与此 UUID 关联的时钟序列值。
    int
    将此 UUID 与指定的 UUID 进行比较。
    boolean
    equals(Object obj)
    将此对象与指定对象进行比较。
    static UUID
    根据 toString() 方法中描述的字符串标准表示创建 UUID
    long
    返回此 UUID 的 128 位值的最低有效 64 位。
    long
    返回此 UUID 的 128 位值的最高有效 64 位。
    int
    返回此 UUID 的哈希码。
    static UUID
    nameUUIDFromBytes(byte[] name)
    静态工厂根据指定的字节数组检索类型 3(基于名称)UUID
    long
    node()
    与此 UUID 关联的节点值。
    static UUID
    检索类型 4(伪随机生成)UUID 的静态工厂。
    long
    与此 UUID 关联的时间戳值。
    返回表示此 UUIDString 对象。
    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 位,leastSigBits 成为 UUID 的最低 64 位。
      参数:
      mostSigBits - UUID 的最高有效位
      leastSigBits - UUID 的最低有效位
  • 方法详情

    • randomUUID

      public static UUID  randomUUID()
      检索类型 4(伪随机生成)UUID 的静态工厂。 UUID 是使用加密强度高的伪随机数生成器生成的。
      返回:
      一个随机生成的UUID
    • nameUUIDFromBytes

      public static UUID  nameUUIDFromBytes(byte[] name)
      静态工厂根据指定的字节数组检索类型 3(基于名称)UUID
      参数:
      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 字段构成。从 UTC 时间 1582 年 10 月 15 日午夜开始,以 100 纳秒为单位测量生成的时间戳。

      时间戳值仅在版本类型为 1 的基于时间的 UUID 中有意义。如果此 UUID 不是基于时间的 UUID,则此方法将抛出 UnsupportedOperationException。

      返回:
      这个 UUID 的时间戳。
      抛出:
      UnsupportedOperationException - 如果此 UUID 不是版本 1 UUID
    • clockSequence

      public int clockSequence()
      与此 UUID 关联的时钟序列值。

      14 位时钟序列值是从这个 UUID 的时钟序列字段构造的。时钟序列字段用于保证基于时间的 UUID 中的时间唯一性。

      clockSequence 值仅在版本类型为 1 的基于时间的 UUID 中有意义。如果此 UUID 不是基于时间的 UUID,则此方法将抛出 UnsupportedOperationException。

      返回:
      这个UUID的时钟序列
      抛出:
      UnsupportedOperationException - 如果此 UUID 不是版本 1 UUID
    • node

      public long node()
      与此 UUID 关联的节点值。

      48 位节点值是从这个 UUID 的节点字段构造的。该字段旨在保存生成此 UUID 的机器的 IEEE 802 地址,以保证空间唯一性。

      节点值仅在版本类型为 1 的基于时间的 UUID 中有意义。如果此 UUID 不是基于时间的 UUID,则此方法将抛出 UnsupportedOperationException。

      返回:
      这个UUID的节点值
      抛出:
      UnsupportedOperationException - 如果此 UUID 不是版本 1 UUID
    • toString

      public String  toString()
      返回表示此 UUIDString 对象。

      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 进行比较。

      如果 UUID 不同的最重要字段对于第一个 UUID 更大,则两个 UUID 中的第一个大于第二个。

      指定者:
      compareTo 在接口 Comparable<UUID>
      参数:
      val - UUID 要与此 UUID 进行比较
      返回:
      -1、0 或 1,因为此 UUID 小于、等于或大于 val