Po sprawdzeniu implementacji java.util.UUID.fromString
, okazało się, że nie sprawdza długości UUID. Czy jest jakiś szczególny powód tego? Sprawdza tylko składniki oddzielone przez "-".java.util.UUID.fromString nie sprawdzanie długości
Czy powinien również powodować wyjątek IllegalArgumentException, gdy długość nie wynosi 36?
Obecnie bez sprawdzania długości numery są automatycznie dodawane z zerami, jeśli są mniejsze niż długość komponentu lub przesunięte, jeśli są większe. Wadą jest to, że jeśli wprowadzono ciąg UUID z brakującą cyfrą, to jest on akceptowany jako poprawny i dodawany z 0. Trudno jest debugować. Na przykład ten "12345678-1234-1234-1234-123456789ab" staje się "12345678-1234-1234-1234-ab". Zwróć uwagę na "0"? I ten "12345678-1234-1234-1234-123456789abcd" staje się "12345678-1234-1234-1234-23456789abcd" z usuniętym "1".
Aby popchnąć to jeszcze dalej, ciąg "1-2-3-4-5" będzie również traktowany jako ważny i stanie się "00000001-0002-0003-0004-000000000005".
Edytuj: Aby wyjaśnić moje pytanie, czy jest to błąd, czy też zrobiono to celowo, aby zastosować jakiś standard lub zasadę?
Jakie jest dokładnie twoje pytanie? Wiesz, jak działa 'UUID.fromString', sprawdziłeś jego kod źródłowy. Wygląda na to, że nie sprawdza długości części. Więc jakiego rodzaju odpowiedzi oczekujesz tutaj? – Jesper