Класс UUID
- Все реализуемые интерфейсы:
Serializable, Comparable<UUID>
public final class UUID extends Object implements Serializable, Comparable<UUID>
Этот класс предназначен главным образом для работы с UUID варианта Leach-Salz, но также поддерживает создание UUID других вариантов.
Структура UUID варианта 2 (Leach-Salz) выглядит следующим образом: наиболее значимые 64 бита состоят из следующих беззнаковых полей:
0xFFFFFFFF00000000 time_low 0x00000000FFFF0000 time_mid 0x000000000000F000 version 0x0000000000000FFF time_hiНаименее значимые 64 бита состоят из следующих беззнаковых полей:
0xC000000000000000 variant 0x3FFF000000000000 clock_seq 0x0000FFFFFFFFFFFF node
Поле варианта содержит значение, определяющее структуру UUID. Описанная выше структура битов допустима только для
UUID со значением варианта 2, которое указывает на вариант Leach-Salz.
Полную спецификацию, включая формат UUID, структуры и алгоритмы создания UUIDов, см. в документе RFC 9562: Универсальные уникальные идентификаторы (UUID).
Существует восемь определённых типов UUID, каждый из которых обозначается номером версии: основанный на времени (версия 1), безопасность DCE (версия 2), основанный на имени с MD5 (версия 3), случайно сгенерированный (версия 4), основанный на имени с SHA-1 (версия 5), UUID с переупорядоченными временными данными (версия 6), основанный на времени Unix Epoch (версия 7) и с пользовательской структурой (версия 8).
- Начиная с версии:
- 1.5
- Внешние спецификации
- См. также:
Краткое описание конструкторов
| Конструктор | Описание |
|---|---|
UUID |
Создаёт новый UUID с использованием указанных данных. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
int |
clockSequence() |
Значение последовательности тактов, связанное с этим UUID. |
int |
compareTo |
Сравнивает этот UUID с указанным UUID. |
boolean |
equals |
Сравнивает этот объект с указанным объектом. |
static UUID |
fromString |
Создаёт UUID из строкового представления стандартного формата, описанного в методе toString(). |
long |
getLeastSignificantBits() |
Возвращает 64 наименее значимых бита 128-битного значения этого UUID. |
long |
getMostSignificantBits() |
Возвращает 64 наиболее значимых бита 128-битного значения этого UUID. |
int |
hashCode() |
Возвращает хеш-код этого UUID. |
static UUID |
nameUUIDFromBytes |
Статическая фабрика для получения UUID типа 3 (на основе имени) на основе указанного массива байтов. |
long |
node() |
Значение узла, связанное с этим UUID. |
static UUID |
ofEpochMillis |
Создаёт UUID UUID типа 7 (UUIDv7) из заданной метки времени Unix Epoch. |
static UUID |
randomUUID() |
Статическая фабрика для получения UUID типа 4 (псевдослучайно сгенерированного). |
long |
timestamp() |
Значение метки времени, связанное с этим UUID. |
String |
toString() |
Возвращает объект String, представляющий этот UUID. |
int |
variant() |
Номер варианта, связанный с этим UUID. |
int |
version() |
Номер версии, связанный с этим UUID. |
Методы, объявленные в классе Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait | Модификатор и тип | Метод | Описание |
|---|---|---|
protected Object |
clone() |
Создаёт и возвращает копию этого объекта. |
protected void |
finalize() |
Устарело и будет удалено: этот элемент API может быть удалён в будущей версии. Финализация объявлена устаревшей и будет удалена в одном из будущих выпусков. |
final Class |
getClass() |
Возвращает класс времени выполнения этого Object. |
final void |
notify() |
Пробуждает один поток, ожидающий на мониторе этого объекта. |
final void |
notifyAll() |
Пробуждает все потоки, ожидающие на мониторе этого объекта. |
final void |
wait() |
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или interrupt. |
final void |
wait |
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или interrupt, либо до истечения заданного интервала реального времени. |
final void |
wait |
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или interrupt, либо до истечения заданного интервала реального времени. |
Подробное описание конструкторов
UUID
public UUID(long mostSigBits, long leastSigBits)
UUID с использованием указанных данных.
mostSigBits используется для 64 наиболее значимых битов
UUID, а leastSigBits становится 64 наименее значимыми битами UUID.- Параметры:
-
mostSigBits- Наиболее значимые битыUUID -
leastSigBits- Наименее значимые битыUUID
Подробное описание методов
randomUUID
public static UUID randomUUID()
UUID генерируется с помощью криптографически стойкого генератора псевдослучайных чисел.- Возвращает:
- Случайно сгенерированный
UUID
nameUUIDFromBytes
public static UUID nameUUIDFromBytes(byte[] name)
UUID типа 3 (на основе имени) на основе указанного массива байтов.- Параметры:
-
name- Массив байтов, используемый для созданияUUID - Возвращает:
UUID, созданный на основе указанного массива
ofEpochMillis
public static UUID ofEpochMillis(long timestamp)
UUID UUID типа 7 (UUIDv7) из заданной метки времени Unix Epoch. Возвращённый UUID будет содержать заданное значение timestamp в первых 6 байтах, затем биты версии и варианта, представляющие UUIDv7, а оставшиеся байты будут содержать случайные данные, полученные от криптографически стойкого генератора псевдослучайных чисел.- Примечание к API:
-
Значения
UUIDv7создаются путём размещения метки времени Unix в миллисекундах в 48 наиболее значимых битах, выделения необходимых битов версии (4 бита) и варианта (2 бита), а также заполнения оставшихся 74 битов случайными битами. Поэтому этот метод отклоняет значенияtimestamp, не помещающиеся в 48 бит.Монотонность (каждое последующее значение больше предыдущего) — важная характеристика значений
UUIDv7. Это обусловлено тем, что значениеtimestampявляется частьюUUID. Предполагается, что вызывающие этот метод, которым требуется создавать монотонные значенияUUIDv7, обеспечат монотонность заданного значенияtimestamp. - Параметры:
-
timestamp- количество миллисекунд с полуночи 1 января 1970 года по UTC, без учёта високосных секунд. - Возвращает:
UUID, созданный с использованием заданного значенияtimestamp- Выбрасывает:
-
IllegalArgumentException- если метка времени отрицательна или превышает(1L << 48) - 1 - Начиная с версии:
- 26
fromString
public static UUID fromString(String name)
UUID из строкового представления стандартного формата, описанного в методе toString().- Параметры:
-
name- Строка, задающаяUUID - Возвращает:
UUIDс указанным значением- Выбрасывает:
-
IllegalArgumentException- Если имя не соответствует строковому представлению, описанному вtoString()
getLeastSignificantBits
public long getLeastSignificantBits()
- Возвращает:
- 64 наименее значимых бита 128-битного значения этого UUID
getMostSignificantBits
public long getMostSignificantBits()
- Возвращает:
- 64 наиболее значимых бита 128-битного значения этого UUID
version
public int version()
UUID. Номер версии описывает способ создания этого UUID. Номер версии имеет следующие значения: - 1 UUID на основе времени
- 2 UUID для безопасности DCE
- 3 UUID на основе имени
- 4 Случайно сгенерированный UUID
- 7 UUID на основе времени Unix Epoch
- Возвращает:
- Номер версии этого
UUID
variant
public int variant()
UUID. Номер варианта описывает структуру UUID. Номер варианта имеет следующие значения: - 0 Зарезервировано для обратной совместимости с NCS
- 2 IETF RFC 9562 (Leach-Salz), используется этим классом
- 6 Зарезервировано для обратной совместимости с Microsoft Corporation
- 7 Зарезервировано для будущего определения
- Возвращает:
- Номер варианта этого
UUID
timestamp
public long timestamp()
60-битное значение метки времени формируется из полей time_low, time_mid и time_hi этого UUID. Полученная метка времени измеряется в единицах по 100 наносекунд, прошедших с полуночи 15 октября 1582 года по UTC.
Значение метки времени имеет смысл только для UUID на основе времени версии 1. Если этот UUID не является UUID на основе времени, метод выбрасывает UnsupportedOperationException.
- Возвращает:
- Метка времени этого
UUID. - Выбрасывает:
-
UnsupportedOperationException- Если этот UUID не является UUID версии 1
clockSequence
public int clockSequence()
14-битное значение последовательности тактов формируется из поля последовательности тактов этого UUID. Поле последовательности тактов используется для обеспечения временной уникальности UUID на основе времени.
Значение clockSequence имеет смысл только для UUID на основе времени версии 1. Если этот UUID не является UUID на основе времени, метод выбрасывает UnsupportedOperationException.
- Возвращает:
- Последовательность тактов этого
UUID - Выбрасывает:
-
UnsupportedOperationException- Если этот UUID не является UUID версии 1
node
public long node()
48-битное значение узла формируется из поля узла этого UUID. Предполагается, что в этом поле хранится адрес IEEE 802 компьютера, создавшего этот UUID, для обеспечения пространственной уникальности.
Значение узла имеет смысл только для UUID на основе времени версии 1. Если этот UUID не является UUID на основе времени, метод выбрасывает UnsupportedOperationException.
- Возвращает:
- Значение узла этого
UUID - Выбрасывает:
-
UnsupportedOperationException- Если этот UUID не является UUID версии 1
toString
public String toString()
String, представляющий этот UUID. Строковое представление 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"
hashCode
equals
public boolean equals(Object obj)
true тогда и только тогда, когда аргумент не является null, является объектом UUID, имеет тот же вариант и содержит то же значение, побитно, что и этот UUID.compareTo
public int compareTo(UUID val)
Первый из двух UUID больше второго, если поле с наибольшим значением, в котором UUID различаются, имеет большее значение у первого UUID.
- Определён в:
-
compareToв интерфейсеComparable<UUID> - Параметры:
-
val-UUID, с которым требуется сравнить этотUUID - Возвращает:
- -1, 0 или 1, если этот
UUIDменьше, равен или большеval
© 1993, 2025, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.