Как сгенерировать UUID
Короткий ответ
UUID — 128-битный идентификатор, который практически не повторяется. UUID.randomUUID() создаёт случайный:
void main() {
UUID id = UUID.randomUUID();
IO.println(id);
IO.println(id.version());
}Результат:
b5ab3a62-a3be-430f-9ccb-7ffef0718aff
4Значение каждый раз новое; версия 4 означает «случайный».
Из строки
UUID.fromString() разбирает строковую запись:
void main() {
UUID id = UUID.fromString("3f2a6c1e-8b4d-4c7a-9e21-5d0f7b3a9c44");
IO.println(id.toString().toUpperCase());
}Результат:
3F2A6C1E-8B4D-4C7A-9E21-5D0F7B3A9C44Одинаковый UUID для одного имени
nameUUIDFromBytes() всегда даёт один и тот же UUID для одних и тех же байтов:
void main() {
byte[] name = "anna@site.com".getBytes(StandardCharsets.UTF_8);
IO.println(UUID.nameUUIDFromBytes(name));
IO.println(UUID.nameUUIDFromBytes(name).equals(UUID.nameUUIDFromBytes(name)));
}Результат:
7757f307-9840-333a-9f7c-2a03148241bc
trueЧастая ошибка
Не проверить строку перед fromString(). Неверная строка вызывает исключение:
void main() {
UUID.fromString("not-a-uuid");
}Результат:
Exception in thread "main" java.lang.IllegalArgumentException: Invalid UUID string: not-a-uuidФункции из этого ответа
- Random — Генератор случайных чисел: целые в диапазоне, дробные, boolean.