Почему класс java.util.UUID повторяет свою проверку при анализе входной строки?JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Почему класс java.util.UUID повторяет свою проверку при анализе входной строки?

Сообщение Anonymous »

Спецификации UUID, RFC 9562 и RFC 4122, определяют каноническое текстовое представление 128 бит как группы шестнадцатеричных цифр, разделенных символом ДЕФИС-ПЛЮС, 8-4-4-4-12, например:

7f1943d2-f582-11f0-8de9-0242ac120002

Когда я проверяю исходный код реализации OpenJDK, я вижу, что метод анализа fromString вызывает подпрограмму fromString1. Эта подпрограмма, кажется, повторяет логику первого метода:
  • Проверка длины.
  • Проверка дефисов.
  • Проанализируйте биты, чтобы получить два длинных целочисленных значения.
Первый метод, выполняющий синтаксический анализ:

Код: Выделить всё

// https://github.com/openjdk/jdk/blob/master/src/java.base/share/classes/java/util/UUID.java
public static UUID fromString(String name) {
if (name.length() == 36) {
char ch1 = name.charAt(8);
char ch2 = name.charAt(13);
char ch3 = name.charAt(18);
char ch4 = name.charAt(23);
if (ch1 == '-' && ch2 == '-' && ch3 == '-' && ch4 == '-') {
long msb1 = parse4Nibbles(name, 0);
long msb2 = parse4Nibbles(name, 4);
long msb3 = parse4Nibbles(name, 9);
long msb4 = parse4Nibbles(name, 14);
long lsb1 = parse4Nibbles(name, 19);
long lsb2 = parse4Nibbles(name, 24);
long lsb3 = parse4Nibbles(name, 28);
long lsb4 = parse4Nibbles(name, 32);
if ((msb1 | msb2 | msb3 | msb4 | lsb1 | lsb2 | lsb3 | lsb4) >= 0) {
return new UUID(
msb1 

Подробнее здесь: [url]https://stackoverflow.com/questions/79871553/why-does-the-java-util-uuid-class-seem-to-repeat-its-validation-when-parsing-a[/url]
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»