Package java.util

Class UUID

  • All Implemented Interfaces:
    Serializable, Comparable<UUID>

    public final class UUID
    extends Object
    implements Serializable, Comparable<UUID>
    UUID is an immutable representation of a 128-bit universally unique identifier (UUID).

    There are multiple, variant layouts of UUIDs, but this class is based upon variant 2 of RFC 4122, the Leach-Salz variant. This class can be used to model alternate variants, but most of the methods will be unsupported in those cases; see each method for details.

    Since:
    1.5
    See Also:
    Serialized Form
    • Constructor Detail

      • UUID

        public UUID​(long mostSigBits,
                    long leastSigBits)

        Constructs an instance with the specified bits.

        Parameters:
        mostSigBits - The 64 most significant bits of the UUID.
        leastSigBits - The 64 least significant bits of the UUID.
    • Method Detail

      • randomUUID

        public static UUID randomUUID()

        Generates a variant 2, version 4 (randomly generated number) UUID as per RFC 4122.

        Returns:
        an UUID instance.
      • nameUUIDFromBytes

        public static UUID nameUUIDFromBytes​(byte[] name)

        Generates a variant 2, version 3 (name-based, MD5-hashed) UUID as per RFC 4122.

        Parameters:
        name - the name used as byte array to create an UUID.
        Returns:
        an UUID instance.
      • getLeastSignificantBits

        public long getLeastSignificantBits()

        The 64 least significant bits of the UUID.

        Returns:
        the 64 least significant bits.
      • getMostSignificantBits

        public long getMostSignificantBits()

        The 64 most significant bits of the UUID.

        Returns:
        the 64 most significant bits.
      • version

        public int version()

        The version of the variant 2 UUID as per RFC 4122. If the variant is not 2, then the version will be 0.

        • 1 - Time-based UUID
        • 2 - DCE Security UUID
        • 3 - Name-based with MD5 hashing UUID (nameUUIDFromBytes(byte[]))
        • 4 - Randomly generated UUID (randomUUID())
        • 5 - Name-based with SHA-1 hashing UUID
        Returns:
        an int value.
      • variant

        public int variant()

        The variant of the UUID as per RFC 4122.

        • 0 - Reserved for NCS compatibility
        • 2 - RFC 4122/Leach-Salz
        • 6 - Reserved for Microsoft Corporation compatibility
        • 7 - Reserved for future use
        Returns:
        an int value.
      • compareTo

        public int compareTo​(UUID uuid)

        Compares this UUID to the specified UUID. The natural ordering of UUIDs is based upon the value of the bits from most significant to least significant.

        Specified by:
        compareTo in interface Comparable<UUID>
        Parameters:
        uuid - the UUID to compare to.
        Returns:
        a value of -1, 0 or 1 if this UUID is less than, equal to or greater than uuid.
      • equals

        public boolean equals​(Object object)

        Compares this UUID to another object for equality. If object is not null, is a UUID instance, and all bits are equal, then true is returned.

        Overrides:
        equals in class Object
        Parameters:
        object - the Object to compare to.
        Returns:
        true if this UUID is equal to object or false if not.
        See Also:
        Object.hashCode()
      • toString

        public String toString()

        Returns a string representation of this UUID in the following format, as per RFC 4122.

                    UUID                   = time-low "-" time-mid "-"
                                             time-high-and-version "-"
                                             clock-seq-and-reserved
                                             clock-seq-low "-" node
                    time-low               = 4hexOctet
                    time-mid               = 2hexOctet
                    time-high-and-version  = 2hexOctet
                    clock-seq-and-reserved = hexOctet
                    clock-seq-low          = hexOctet
                    node                   = 6hexOctet
                    hexOctet               = hexDigit hexDigit
                    hexDigit =
                        "0" / "1" / "2" / "3" / "4" / "5" / "6" / "7" / "8" / "9" /
                        "a" / "b" / "c" / "d" / "e" / "f" /
                        "A" / "B" / "C" / "D" / "E" / "F"
         
        Overrides:
        toString in class Object
        Returns:
        a String instance.