用Java创build一个GUID

在Java中创build一个GUID的最佳方法是什么?

查看Java 5及更高版本捆绑的UUID类 。

例如:

  • 如果你想要一个随机的UUID,你可以使用randomUUID方法。
  • 如果你想要一个初始化为特定值的UUID,你可以使用UUID构造函数或者fromString方法。

java.util.UUID.randomUUID();

这取决于你想要什么样的UUID 。

  • 标准的Java UUID类生成版本4 (随机)UUID。 ( 更新 – 版本3 (名称)UUID也可以生成。)它也可以处理其他变体,尽pipe它不能生成它们。 (在这种情况下,“句柄”意味着从longbyte[]String表示构造UUID实例,并提供一些适当的访问器。

  • Java UUID生成器(JUG)实现声称支持“ RFC-4122定义的所有3种”官方“UUIDtypes”,尽pipeRFC实际上定义了4种types并提到了第5种types。

有关UUIDtypes和变体的更多信息, 维基百科中有一个很好的总结,血淋淋的细节在RFC 4122和其他规范。

其他的答案是正确的,尤其是斯蒂芬C 这一个 。

到达外部Java

由于安全考虑,在Java中生成UUID值仅限于版本4(随机) 。

如果你想要其他版本的UUID,一个途径就是让你的Java应用程序到达JVM之外,通过调用来生成UUID:

  • 命令行实用程序
    几乎每个操作系统都捆绑在一起。
    例如, uuidgen在Mac OS X,BSD和Linux中发现。
  • 数据库服务器
    使用JDBC检索在数据库服务器上生成的UUID。
    例如, uuid-ossp扩展通常与Postgres捆绑在一起。 该扩展可以生成版本1,3和4的值,另外还有一些变化:
    • uuid_generate_v1mc() – 生成版本1的UUID,但使用随机多播MAC地址而不是计算机的真实MAC地址。
    • uuid_generate_v5(namespace uuid, name text) – 生成版本5的UUID,除了SHA-1用作散列方法外,其工作方式类似于版本3的UUID。
  • networking服务
    例如, UUID生成器创build版本1和3以及零值和GUID 。

马克·拜尔斯的答案只是一个例子:

 import java.util.UUID; public class RandomStringUUID { public static void main(String[] args) { UUID uuid = UUID.randomUUID(); String randomUUIDString = uuid.toString(); System.out.println("UUID=" + randomUUIDString ); } }