鴻蒙OS UUID

2022-08-10 17:27 更新

UUID

java.lang.Object

|---java.util.UUID

public final class UUID
extends Object
implements Serializable, Comparable<UUID>

表示不可變的通用唯一標(biāo)識(shí)符 (UUID) 的類。 UUID 代表一個(gè) 128 位的值。

這些全局標(biāo)識(shí)符存在不同的變體。 此類的方法用于操作 Leach-Salz 變體,盡管構(gòu)造函數(shù)允許創(chuàng)建 UUID 的任何變體(如下所述)。

變體 2 (Leach-Salz) UUID 的布局如下: 最重要的 long 由以下無符號(hào)字段組成:

 0xFFFFFFFF00000000 time_low
 0x00000000FFFF0000 time_mid
 0x000000000000F000 version
 0x0000000000000FFF time_hi

最不重要的 long 由以下無符號(hào)字段組成:

 0xC000000000000000 variant
 0x3FFF000000000000 clock_seq
 0x0000FFFFFFFFFFFF node

變量字段包含一個(gè)標(biāo)識(shí) UUID 布局的值。 上述位布局僅對(duì)變體值為 2 的 UUID 有效,表示 Leach-Salz 變體。

version 字段包含一個(gè)描述此 UUID 類型的值。 UUID 有四種不同的基本類型:基于時(shí)間、DCE 安全、基于名稱和隨機(jī)生成的 UUID。 這些類型的版本值分別為 1、2、3 和 4。

構(gòu)造函數(shù)摘要

構(gòu)造函數(shù) 描述
UUID(long mostSigBits, long leastSigBits) 使用指定的數(shù)據(jù)構(gòu)造一個(gè)新的 UUID。

方法總結(jié)

修飾符和類型 方法 描述
int clockSequence() 與此 UUID 關(guān)聯(lián)的時(shí)鐘序列值。
int compareTo(UUID val) 將此 UUID 與指定的 UUID 進(jìn)行比較。
boolean equals(Object obj) 將此對(duì)象與指定對(duì)象進(jìn)行比較。
static UUID fromString(String name) 根據(jù) toString() 方法中描述的字符串標(biāo)準(zhǔn)表示創(chuàng)建 UUID。
long getLeastSignificantBits() 返回此 UUID 的 128 位值的最低有效 64 位。
long getMostSignificantBits() 返回此 UUID 的 128 位值的最高有效 64 位。
int hashCode() 返回此 UUID 的哈希碼。
static UUID nameUUIDFromBytes(byte[] name) 基于指定字節(jié)數(shù)組檢索類型 3(基于名稱)UUID 的靜態(tài)工廠。
long node() 與此 UUID 關(guān)聯(lián)的節(jié)點(diǎn)值。
static UUID randomUUID() 用于檢索類型 4(偽隨機(jī)生成)UUID 的靜態(tài)工廠。
long timestamp() 與此 UUID 關(guān)聯(lián)的時(shí)間戳值。
String toString() 返回表示此 UUID 的 String 對(duì)象。
int variant() 與此 UUID 關(guān)聯(lián)的變體編號(hào)。
int version() 與此 UUID 關(guān)聯(lián)的版本號(hào)。
從類 java.lang.Object 繼承的方法
clone, finalize, getClass, notify, notifyAll, wait, wait, wait

構(gòu)造函數(shù)詳細(xì)信息

UUID

public UUID(long mostSigBits, long leastSigBits)

使用指定的數(shù)據(jù)構(gòu)造一個(gè)新的 UUID。 mostSigBits 用于 UUID 的最高有效 64 位,leastSigBits 成為 UUID 的最低有效 64 位。

參數(shù):

參數(shù)名稱 參數(shù)描述
mostSigBits UUID 的最高有效位
leastSigBits UUID 的最低有效位

方法詳情

randomUUID

public static UUID randomUUID()

用于檢索類型 4(偽隨機(jī)生成)UUID 的靜態(tài)工廠。 UUID 是使用加密強(qiáng)的偽隨機(jī)數(shù)生成器生成的。

返回:

隨機(jī)生成的 UUID

nameUUIDFromBytes

public static UUID nameUUIDFromBytes(byte[] name)

基于指定字節(jié)數(shù)組檢索類型 3(基于名稱)UUID 的靜態(tài)工廠。

參數(shù):

參數(shù)名稱 參數(shù)描述
name 用于構(gòu)造 UUID 的字節(jié)數(shù)組

返回:

從指定數(shù)組生成的 UUID

fromString

public static UUID fromString(String name)

根據(jù) toString() 方法中描述的字符串標(biāo)準(zhǔn)表示創(chuàng)建 UUID。

參數(shù):

參數(shù)名稱 參數(shù)描述
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 關(guān)聯(lián)的版本號(hào)。 版本號(hào)描述了這個(gè) UUID 是如何生成的。 版本號(hào)的含義如下:

  • 1 基于時(shí)間的 UUID
  • 2 DCE 安全 UUID
  • 3 基于名稱的 UUID
  • 4 隨機(jī)生成的UUID

返回:

此 UUID 的版本號(hào)

variant

public int variant()

與此 UUID 關(guān)聯(lián)的變體編號(hào)。 變體編號(hào)描述了 UUID 的布局。 變體編號(hào)具有以下含義:

  • 0 為 NCS 向后兼容保留
  • 2 IETF RFC 4122 (Leach-Salz),被這個(gè)類使用
  • 6 保留,Microsoft Corporation 向后兼容
  • 7 保留供將來定義

返回:

此 UUID 的變體編號(hào)

timestamp

public long timestamp()

與此 UUID 關(guān)聯(lián)的時(shí)間戳值。

60 位時(shí)間戳值由該 UUID 的 time_low、time_mid 和 time_hi 字段構(gòu)成。 生成的時(shí)間戳從 UTC 1582 年 10 月 15 日午夜開始以 100 納秒為單位進(jìn)行測量。

時(shí)間戳值僅在基于時(shí)間的 UUID 中有意義,其版本類型為 1。如果此 UUID 不是基于時(shí)間的 UUID,則此方法將引發(fā) UnsupportedOperationException。

返回:

此 UUID 的時(shí)間戳。

Throws:

Throw名稱 Throw描述
UnsupportedOperationException 如果此 UUID 不是版本 1 UUID

clockSequence

public int clockSequence()

與此 UUID 關(guān)聯(lián)的時(shí)鐘序列值。

14 位時(shí)鐘序列值由該 UUID 的時(shí)鐘序列字段構(gòu)成。 時(shí)鐘序列字段用于保證基于時(shí)間的 UUID 中的時(shí)間唯一性。

clockSequence 值僅在基于時(shí)間的 UUID 中有意義,其版本類型為 1。如果此 UUID 不是基于時(shí)間的 UUID,則此方法將引發(fā) UnsupportedOperationException。

返回:

此 UUID 的時(shí)鐘序列

Throws:

Throw名稱 Throw描述
UnsupportedOperationException 如果此 UUID 不是版本 1 UUID

node

public long node()

與此 UUID 關(guān)聯(lián)的節(jié)點(diǎn)值。

48 位節(jié)點(diǎn)值是根據(jù)此 UUID 的節(jié)點(diǎn)字段構(gòu)造的。 此字段旨在保存生成此 UUID 的機(jī)器的 IEEE 802 地址,以保證空間唯一性。

節(jié)點(diǎn)值僅在基于時(shí)間的 UUID 中有意義,其版本類型為 1。如果此 UUID 不是基于時(shí)間的 UUID,則此方法將引發(fā) UnsupportedOperationException。

返回:

此 UUID 的節(jié)點(diǎn)值

Throws:

Throw名稱 Throw描述
UnsupportedOperationException 如果此 UUID 不是版本 1 UUID

toString

public String toString()

返回表示此 UUID 的 String 對(duì)象。

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)

將此對(duì)象與指定對(duì)象進(jìn)行比較。 當(dāng)且僅當(dāng)參數(shù)不為 null、是 UUID 對(duì)象、具有相同的變體并且包含與此 UUID 逐位相同的值時(shí),結(jié)果才為 true。

覆蓋:

類 Object 中的等于

參數(shù):

參數(shù)名稱 參數(shù)名稱
obj 比較對(duì)象

返回:

如果對(duì)象相同,則為 true; 否則為 false

compareTo

public int compareTo(UUID val)

將此 UUID 與指定的 UUID 進(jìn)行比較。

如果 UUID 不同的最重要字段對(duì)于第一個(gè) UUID 更大,則兩個(gè) UUID 中的第一個(gè)大于第二個(gè)。

指定者:

接口 ComparableUUID 中的 compareTo

參數(shù):

參數(shù)名稱 參數(shù)描述
val 此 UUID 要與之比較的 UUID

返回:

-1、0 或 1,因?yàn)榇?UUID 小于、等于或大于 val

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)