Module  java.base
软件包  java.util

Class UUID

  • All Implemented Interfaces:
    SerializableComparable<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的布局的UUID 上述位布局仅适用于变体值为2的UUID ,表示Leach-Salz变体。

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

    有关包括用于创建UUID s的算法的更多信息,请参阅RFC 4122: A Universally Unique IDentifier (UUID) URN Namespace第4.2节“创建基于时间的UUID的算法”。

    从以下版本开始:
    1.5
    另请参见:
    Serialized Form
    • 构造方法详细信息

      • UUID

        public UUID​(long mostSigBits,
                    long leastSigBits)
        使用指定的数据构造一个新的UUID mostSigBits用于最显著64位UUIDleastSigBits成为的至少显著64位UUID
        参数
        mostSigBits -的最显著位 UUID
        leastSigBits -的的最低显著位 UUID
    • 方法详细信息

      • randomUUID

        public static UUID randomUUID​()
        静态工厂检索一个类型4(伪随机生成)的UUID。 使用加密强伪随机数生成器生成UUID
        结果
        随机生成 UUID
      • nameUUIDFromBytes

        public static UUID nameUUIDFromBytes​(byte[] name)
        静态工厂根据指定的字节数组检索类型3(基于名称) UUID
        参数
        name - 用于构造 UUID字节数组
        结果
        A UUID从指定的数组生成
      • 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字段UUID 所产生的时间戳记是从1582年10月15日UTC 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"
         
        重写:
        toStringObject
        结果
        这个 UUID字符串表示 UUID
      • equals

        public boolean equals​(Object obj)
        将此对象与指定的对象进行比较。 结果是true如果且仅当参数不是null ,是一个UUID对象,具有相同的变体,并包含相同的值,位为位,因为这个UUID
        重写:
        equalsObject
        参数
        obj - 要比较的对象
        结果
        true如果对象是一样的; false否则
        另请参见:
        Object.hashCode()HashMap
      • compareTo

        public int compareTo​(UUID val)
        将此UUID与指定的UUID进行比较。

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

        Specified by:
        compareTo在接口 Comparable<UUID>
        参数
        val - UUID要对这 UUID进行比较
        结果
        -1,0或1,因为这个 UUID小于,等于或大于 val