# 클래스 산출물이 소스보다 새로운가 : yes java.version = 21.0.12 [계약이 말하는 두 갈래] normalize("0190bd6e-7c3e-7abc-8def-0123456789ab") -> "0190bd6e-7c3e-7abc-8def-0123456789ab" normalize("0190BD6E-7C3E-7ABC-8DEF-0123456789AB") -> "0190bd6e-7c3e-7abc-8def-0123456789ab" normalize("not-a-uuid") -> IllegalArgumentException: Invalid UUID string: not-a-uuid normalize("0190bd6e7c3e7abc8def0123456789ab") -> IllegalArgumentException: Invalid UUID string: 0190bd6e7c3e7abc8def0123456789ab [정규형에서 한 글자를 지운다] normalize("0190bd6e-7c3e-7abc-8def-123456789ab") -> "0190bd6e-7c3e-7abc-8def-0123456789ab" 원본과 같은가 : true normalize("0190bd6e-7c3e-7abc-8def-0123456789a") -> "0190bd6e-7c3e-7abc-8def-00123456789a" 원본과 같은가 : false normalize("0190bd6e-7c3e-7abc-8def-012345678ab") -> "0190bd6e-7c3e-7abc-8def-0012345678ab" 원본과 같은가 : false normalize("0190bd6e7c3e-7abc-8def-0123456789ab") -> IllegalArgumentException: Invalid UUID string: 0190bd6e7c3e-7abc-8def-0123456789ab 원본과 같은가 : false [길이가 36이어도 대시 위치가 다르면 같은 경로로 떨어진다] normalize("0000001-00001-0001-0001-000000000001") -> "00000001-0001-0001-0001-000000000001" [그룹이 규정 자릿수를 넘으면 상위 비트를 버린다] normalize("100000001-1-1-1-1") -> "00000001-0001-0001-0001-000000000001" normalize("1-1-1-1-1000000000001") -> "00000001-0001-0001-0001-000000000001" [십육진이 아닌 것도 통과한다] normalize("+1-1-1-1-1") -> "00000001-0001-0001-0001-000000000001" normalize("١-1-1-1-1") -> "00000001-0001-0001-0001-000000000001" [서로 다른 입력이 같은 식별자가 된다] 00000001-0001-0001-0001-000000000001 <- "1-1-1-1-1", "01-01-01-01-01", "+1-1-1-1-1", "00000001-0001-0001-0001-000000000001" 00000001-0001-0001-0001-000000000002 <- "1-1-1-1-2" [같은 파서를 쓰는 형제 메서드] toUuid("1-1-1-1-1") = 00000001-0001-0001-0001-000000000001