用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它不能生成它们。 (在这种情况下,“句柄”意味着从long
,byte[]
或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 ); } }