7f1943d2-f582-11f0-8de9-0242ac120002
Wenn ich den Quellcode der OpenJDK-Implementierung untersuche, sehe ich, dass die Parsing-Methode fromString eine Unterroutine aufruft, fromString1. Diese Unterroutine scheint die Logik der ersten Methode zu wiederholen:
- Auf Länge prüfen.
- Auf Bindestriche prüfen.
- Bits analysieren, um zwei lange Ganzzahlwerte zu erzeugen.
Code: Select all
// 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
Mobile version