UUID
java.lang.Object
|—java.util.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
最不重要的 long 由以下无符号字段组成:
0xC000000000000000 variant
0x3FFF000000000000 clock_seq
0x0000FFFFFFFFFFFF node
变量字段包含一个标识 UUID 布局的值。 上述位布局仅对变体值为 2 的 UUID 有效,表示 Leach-Salz 变体。
version 字段包含一个描述此 UUID 类型的值。 UUID 有四种不同的基本类型:基于时间、DCE 安全、基于名称和随机生成的 UUID。 这些类型的版本值分别为 1、2、3 和 4。
构造函数摘要
构造函数 | 描述 |
---|---|
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 的静态工厂。 |
long | node() | 与此 UUID 关联的节点值。 |
static UUID | randomUUID() | 用于检索类型 4(伪随机生成)UUID 的静态工厂。 |
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 位,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
Throws:
Throw名称 | Throw描述 |
---|---|
IllegalArgumentException | 如果 name 不符合 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 纳秒为单位进行测量。
时间戳值仅在基于时间的 UUID 中有意义,其版本类型为 1。如果此 UUID 不是基于时间的 UUID,则此方法将引发 UnsupportedOperationException。
返回:
此 UUID 的时间戳。
Throws:
Throw名称 | Throw描述 |
---|---|
UnsupportedOperationException | 如果此 UUID 不是版本 1 UUID |
clockSequence
public int clockSequence()
与此 UUID 关联的时钟序列值。
14 位时钟序列值由该 UUID 的时钟序列字段构成。 时钟序列字段用于保证基于时间的 UUID 中的时间唯一性。
clockSequence 值仅在基于时间的 UUID 中有意义,其版本类型为 1。如果此 UUID 不是基于时间的 UUID,则此方法将引发 UnsupportedOperationException。
返回:
此 UUID 的时钟序列
Throws:
Throw名称 | Throw描述 |
---|---|
UnsupportedOperationException | 如果此 UUID 不是版本 1 UUID |
node
public long node()
与此 UUID 关联的节点值。
48 位节点值是根据此 UUID 的节点字段构造的。 此字段旨在保存生成此 UUID 的机器的 IEEE 802 地址,以保证空间唯一性。
节点值仅在基于时间的 UUID 中有意义,其版本类型为 1。如果此 UUID 不是基于时间的 UUID,则此方法将引发 UnsupportedOperationException。
返回:
此 UUID 的节点值
Throws:
Throw名称 | Throw描述 |
---|---|
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"
覆盖:
类 Object 中的 toString
返回:
此 UUID 的字符串表示形式
hashCode
public int hashCode()
返回此 UUID 的哈希码。
覆盖:
类 Object 中的 hashCode
返回:
此 UUID 的哈希码值
equals
public boolean equals(Object obj)
将此对象与指定对象进行比较。 当且仅当参数不为 null、是 UUID 对象、具有相同的变体并且包含与此 UUID 逐位相同的值时,结果才为 true。
覆盖:
类 Object 中的等于
参数:
参数名称 | 参数名称 |
---|---|
obj | 比较对象 |
返回:
如果对象相同,则为 true; 否则为 false
compareTo
public int compareTo(UUID val)
将此 UUID 与指定的 UUID 进行比较。
如果 UUID 不同的最重要字段对于第一个 UUID 更大,则两个 UUID 中的第一个大于第二个。
指定者:
接口 ComparableUUID 中的 compareTo
参数:
参数名称 | 参数描述 |
---|---|
val | 此 UUID 要与之比较的 UUID |
返回:
-1、0 或 1,因为此 UUID 小于、等于或大于 val