Когда я посмотрел на реализацию java.util.UUID.fromString
, я обнаружил, что он не проверяет длину UUID. Есть ли какая-то особая причина для этого? Он проверяет только компоненты, разделенные символом "-".
String[] components = name.split("-");
if (components.length != 5)
throw new IllegalArgumentException("Invalid UUID string: "+name);
Должен ли он также вызывать исключение IllegalArgumentException, если длина не равна 36?
В настоящее время без проверки длины числа автоматически добавляются с 0, если меньше, чем длина компонента или сдвинуты, если больше. Недостатком является то, что если вы ввели строку UUID с отсутствующей цифрой, она принимается как действительная и добавляется с 0. Это трудно отлаживать.
Например, этот "12345678-1234-1234-1234-123456789ab" становится "12345678-1234-1234-1234-0123456789ab". Обратите внимание, что добавлено '0'? И этот "12345678-1234-1234-1234-123456789abcd" становится "12345678-1234-1234-1234-23456789abcd" с удаленным "1".
Чтобы сделать это еще дальше, строка "1-2-3-4-5" также будет считаться действительной и станет "00000001-0002-0003-0004-000000000005".
Изменить: Чтобы уточнить мой вопрос, является ли это ошибкой или сделано для того, чтобы следовать стандарту или принципу?