Spec-Zone.ru › OpenJDK 27

Класс UUID

java.lang.Object
java.util.UUID
Все реализуемые интерфейсы:
Serializable, Comparable<UUID>
public final class UUID extends Object implements Serializable, Comparable<UUID>
Класс, представляющий неизменяемый универсальный уникальный идентификатор (UUID). UUID представляет собой 128-битное значение.

Этот класс предназначен главным образом для работы с 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
Внешние спецификации
  • RFC 9562: универсальные уникальные идентификаторы (UUID)
См. также:
  • Сериализованная форма

Краткое описание конструкторов

Конструктор Описание
UUID(long mostSigBits, long leastSigBits)
Создаёт новый UUID с использованием указанных данных.

Краткое описание методов

Модификатор и тип Метод Описание
int clockSequence()
Значение последовательности тактов, связанное с этим UUID.
int compareTo(UUID val)
Сравнивает этот UUID с указанным UUID.
boolean equals(Object obj)
Сравнивает этот объект с указанным объектом.
static UUID fromString(String name)
Создаёт UUID из строкового представления стандартного формата, описанного в методе toString().
long getLeastSignificantBits()
Возвращает 64 наименее значимых бита 128-битного значения этого UUID.
long getMostSignificantBits()
Возвращает 64 наиболее значимых бита 128-битного значения этого UUID.
int hashCode()
Возвращает хеш-код этого UUID.
static UUID nameUUIDFromBytes(byte[] name)
Статическая фабрика для получения UUID типа 3 (на основе имени) на основе указанного массива байтов.
long node()
Значение узла, связанное с этим UUID.
static UUID ofEpochMillis(long timestamp)
Создаёт 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(long timeoutMillis)
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или interrupt, либо до истечения заданного интервала реального времени.
final void wait(long timeoutMillis, int nanos)
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова 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 типа 4 (псевдослучайно сгенерированного). 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.
Возвращает:
64 наименее значимых бита 128-битного значения этого UUID

getMostSignificantBits

public long getMostSignificantBits()
Возвращает 64 наиболее значимых бита 128-битного значения этого UUID.
Возвращает:
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()
Значение метки времени, связанное с этим UUID.

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()
Значение последовательности тактов, связанное с этим UUID.

14-битное значение последовательности тактов формируется из поля последовательности тактов этого UUID. Поле последовательности тактов используется для обеспечения временной уникальности UUID на основе времени.

Значение clockSequence имеет смысл только для UUID на основе времени версии 1. Если этот UUID не является UUID на основе времени, метод выбрасывает UnsupportedOperationException.

Возвращает:
Последовательность тактов этого UUID
Выбрасывает:
UnsupportedOperationException - Если этот UUID не является UUID версии 1

node

public long node()
Значение узла, связанное с этим UUID.

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"
Переопределяет:
toString в классе Object
Возвращает:
Строковое представление этого UUID

hashCode

public int hashCode()
Возвращает хеш-код этого UUID.
Переопределяет:
hashCode в классе Object
Возвращает:
Значение хеш-кода для этого UUID
См. также:
  • Object.equals(java.lang.Object)
  • System.identityHashCode(Object)

equals

public boolean equals(Object obj)
Сравнивает этот объект с указанным объектом. Результат true тогда и только тогда, когда аргумент не является null, является объектом UUID, имеет тот же вариант и содержит то же значение, побитно, что и этот UUID.
Переопределяет:
equals в классе Object
Параметры:
obj - Объект для сравнения
Возвращает:
true, если объекты совпадают; в противном случае — false
См. также:
  • Object.hashCode()
  • HashMap

compareTo

public int compareTo(UUID val)
Сравнивает этот UUID с указанным UUID.

Первый из двух UUID больше второго, если поле с наибольшим значением, в котором UUID различаются, имеет большее значение у первого UUID.

Определён в:
compareTo в интерфейсе Comparable<UUID>
Параметры:
val - UUID, с которым требуется сравнить этот UUID
Возвращает:
-1, 0 или 1, если этот UUID меньше, равен или больше val

Сообщить об ошибке или предложить улучшение
Дополнительную справочную информацию по API и документацию для разработчиков см. в документации Java SE, содержащей более подробные описания для разработчиков, обзоры концепций, определения терминов, обходные решения и работающие примеры кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или её аффилированных лиц в США и других странах.
Авторские права © 1993, 2026, Oracle и/или её аффилированные лица, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 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.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API