JavaTM 2 Platform
Standard Ed. 5.0

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
 
long 型数据的最低有效位由以下无符号字段组成:
 0xC000000000000000 variant
 0x3FFF000000000000 clock_seq
 0x0000FFFFFFFFFFFF node
 

variant 字段包含一个表示 UUID 布局的值。以上描述的位布局仅在 UUID 的 variant 值为 2(表示 Leach-Salz 变体)时才有效。

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

有关用于创建 UUID 的算法的更多信息,请参阅互联网草案 UUIDs and GUIDsISO/IEC 11578:1996 处的标准组织定义。

从以下版本开始:
1.5
另请参见:
序列化表格

构造方法摘要
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()
          返回表示此 UUIDString 对象。
 int variant()
          与此 UUID 相关联的变体号。
 int version()
          与此 UUID 相关联的版本号。
 
从类 java.lang.Object 继承的方法
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 

构造方法详细信息

UUID

public UUID(long mostSigBits,
            long leastSigBits)
使用指定的数据构造新的 UUIDmostSigBits 用于 UUID 的最高有效 64 位,而 leastSigBits 将成为 UUID 的最低有效 64 位。

参数:
mostSigBits -
leastSigBits -
方法详细信息

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 - 如果 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 是如何生成的。 版本号具有以下含意:

返回:
UUID 的版本号。

variant

public int variant()
与此 UUID 相关联的变体号。变体号描述 UUID 的布局。 变体号具有以下含意:

返回:
UUID 的变体号。

timestamp

public long timestamp()
与此 UUID 相关联的时间戳值。

60 位的时间戳值根据此 UUID 的 time_low、time_mid 和 time_hi 字段构造。所得到的时间戳以 100 毫微秒为单位,从 UTC(通用协调时间) 1582 年 10 月 15 日零时开始。

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

抛出:
UnsupportedOperationException - 如果此 UUID 不是 version 为 1 的 UUID。

clockSequence

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

14 位的时钟序列值根据此 UUID 的 clock_seq 字段构造。clock_seq 字段用于保证在基于时间的 UUID 中的时间惟一性。

clockSequence 值仅在在基于时间的 UUID(其 version 类型为 1)中才有意义。如果此 UUID 不是基于时间的 UUID,则此方法抛出 UnsupportedOperationException。

返回:
UUID 的时钟序列。
抛出:
UnsupportedOperationException - 如果此 UUID 的 version 不为 1。

node

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

48 位的节点值根据此 UUID 的 node 字段构造。此字段旨在用于保存机器的 IEEE 802 地址,该地址用于生成此 UUID 以保证空间惟一性。

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

返回:
UUID 的节点值。
抛出:
UnsupportedOperationException - 如果此 UUID 的 version 不为 1。

toString

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

UUID 的字符串表示形式由此 BNF 描述:

  UUID                   =  "-"  "-"
                            "-"
                            "-"
                           
  time_low               = 4*
  time_mid               = 2*
  time_high_and_version  = 2*
  variant_and_sequence   = 2*
  node                   = 6*
  hexOctet               = 
  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 的哈希码值。
另请参见:
Object.equals(java.lang.Object), Hashtable

equals

public boolean equals(Object obj)
将此对象与指定对象比较。当且仅当参数不为 null、而是一个 UUID 对象、具有与此 UUID 相同的 varriant、包含相同的值(每一位均相同)时,结果才为 true

覆盖:
Object 中的 equals
参数:
obj - 要与之比较的对象。
返回:
如果对象相同,则返回 true;否则返回 false
另请参见:
Object.hashCode(), Hashtable

compareTo

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

如果两个 UUID 不同,且第一个 UUID 的最高有效字段大于第二个 UUID 的对应字段,则第一个 UUID 大于第二个 UUID。

指定者:
接口 Comparable<UUID> 中的 compareTo
参数:
val - 要与此 UUID 比较的 UUID
返回:
在此 UUID 小于、等于或大于 val 时,分别返回 -1、0 或 1。

JavaTM 2 Platform
Standard Ed. 5.0

提交错误或意见
有关更多的 API 参考资料和开发人员文档,请参阅 Java 2 SDK SE 开发人员文档。该文档包含更详细的、面向开发人员的描述,以及总体概述、术语定义、使用技巧和工作代码示例。

版权所有 2004 Sun Microsystems, Inc. 保留所有权利。 请遵守许可证条款。另请参阅文档重新分发政策