Was sind die besten Möglichkeiten, eine GUID in Java zu erstellen?
Antworten
Zu viele Anzeigen?Werfen Sie einen Blick auf die UUID-Klasse gebündelt mit Java 5 und höher.
Zum Beispiel:
- Wenn Sie eine zufällige UUID wünschen, können Sie die [randomUUID](http://docs.oracle.com/javase/8/docs/api/java/util/UUID.html#randomUUID()) Methode.
- Wenn Sie eine UUID auf einen bestimmten Wert initialisieren möchten, können Sie die UUID-Konstruktor oder die fromString Methode.
Es hängt davon ab, welche Art von UUID Sie wollen.
-
Der Java-Standard
UUID
Klasse erzeugt Version 4 (zufällige) UUIDs. ( UPDATE - Version 3 (Name) UUIDs können auch generiert werden.) Es kann auch mit anderen Varianten umgehen, obwohl es diese nicht erzeugen kann. (In diesem Fall bedeutet "behandeln" das KonstruktUUID
Instanzen vonlong
,byte[]
oString
Repräsentationen, und stellen Sie einige geeignete Accessoren zur Verfügung). -
En Java UUID Generator (JUG) Implementierung unterstützt angeblich "alle 3 'offiziellen' UUID-Typen gemäß der Definition von RFC-4122 "... obwohl der RFC eigentlich 4 Typen definiert und einen 5. erwähnt.
Weitere Informationen über UUID-Typen und -Varianten finden Sie in einer guten Zusammenfassung in Wikipedia und die blutigen Details sind in RFC 4122 und die anderen Spezifikationen.
Die anderen Antworten sind richtig, insbesondere diese por Stephen C. .
Außerhalb von Java erreichen
Erzeugen einer UUID Wert in Java ist begrenzt auf Version 4 (zufällig) aufgrund von Sicherheitsbedenken.
Wenn Sie andere Versionen von UUIDs wünschen, besteht eine Möglichkeit darin, dass Ihre Java-Anwendung außerhalb des JVM um UUIDs durch den Aufruf von on zu erzeugen:
- Befehlszeilen-Dienstprogramm
Wird mit fast allen Betriebssystemen mitgeliefert.
Zum Beispiel,uuidgen
in Mac OS X, BSD und Linux zu finden. - Datenbank-Server
Utilice JDBC um eine auf dem Datenbankserver erzeugte UUID abzurufen.
Zum Beispiel, dieuuid-ossp
Erweiterung oft gebündelt mit Postgres . Diese Erweiterung kann Werte für die Versionen 1, 3 und 4 und zusätzlich ein paar Variationen erzeugen: uuid_generate_v1mc()
- erzeugt eine UUID der Version 1, verwendet aber eine zufällige Multicast-MAC-Adresse anstelle der echten MAC-Adresse des Computers.uuid_generate_v5(namespace uuid, name text)
- erzeugt eine UUID der Version 5, die wie eine UUID der Version 3 funktioniert, mit der Ausnahme, dass SHA-1 als Hashing-Methode verwendet wird.- Webdienst
Zum Beispiel, UUID-Generator erstellt sowohl die Versionen 1 & 3 als auch die Nullwerte y GUID .
- See previous answers
- Weitere Antworten anzeigen
3 Stimmen
Die Frage an stackoverflow.com/questions/325443/generate-uuid-in-java geht es mehr um GUID-Kollisionen als um die Frage, was das Äquivalent einer GUID im Java-Tech-Stack ist, und das ist (glaube ich) eher der Fokus dieser Frage.