Module java.base
Package java.util

Class 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的布局如下:最重要的长整数由以下无符号字段组成:

 0xFFFFFFFF00000000 time_low
 0x00000000FFFF0000 time_mid
 0x000000000000F000 version
 0x0000000000000FFF time_hi
 
最不重要的长整数由以下无符号字段组成:
 0xC000000000000000 variant
 0x3FFF000000000000 clock_seq
 0x0000FFFFFFFFFFFF node
 

变体字段包含一个值,用于标识UUID的布局。上述位布局仅适用于具有变体值为2的UUID,该值表示Leach-Salz变体。

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

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

自 JDK 版本:
1.5
外部规范
参见:
  • Constructor Summary

    Constructors
    Constructor
    Description
    UUID(long mostSigBits, long leastSigBits)
    使用指定的数据构造一个新的UUID
  • Method Summary

    Modifier and Type
    Method
    Description
    int
    与此UUID关联的时钟序列值。
    int
    compareTo(UUID val)
    将此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关联的版本号码。

    Methods declared in class java.lang.Object

    clone, finalize, getClass, notify, notifyAll, wait, wait, wait
  • Constructor Details

    • UUID

      public UUID(long mostSigBits, long leastSigBits)
      使用指定的数据构造一个新的UUIDmostSigBits用于UUID的最重要的64位,leastSigBits成为UUID的最不重要的64位。
      参数:
      mostSigBits - UUID的最重要位
      leastSigBits - UUID的最不重要位
  • Method Details

    • 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字段构造。生成的时间戳以自1582年10月15日午夜以来的100纳秒单位计量。

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

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

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

      14位时钟序列值由此UUID的时钟序列字段构造。时钟序列字段用于保证基于时间的UUID的时间唯一性。

      时钟序列值仅在基于时间的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()
      返回表示此UUIDString对象。

      UUID字符串表示形式如下所述:

       
       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大于第二个UUID。

      指定者:
      compareTo 在接口 Comparable<UUID>
      参数:
      val - 要将此UUID与之比较的UUID
      返回:
      -1,0或1,根据此UUID小于、等于或大于val