我正在准备一个Java库,需要为生成的对象分配唯一的id以进行序列化。 生成唯一ID后,我必须确保下次使用该库时,不可能将id重新分配给我过去已保存的对象。
现在,我发现 Stackoverflow 中的许多人建议依赖于几个选项,即UUID
,SecureRandom
,但我不确定此类适合我的需求,我不知道如何使用它们。
请问,您是否可以使用正确的实用程序以及如何生成ID?
欢迎基于Guava / Apache实用程序的解决方案。
答案 0 :(得分:2)
生成重复UUID的概率为pretty low。我不知道不同机器上的2个UUID实例生成相同ID的概率,但是UUID在JVM中应该是唯一的。我不会经历嵌入数据库只是为了生成UUID的麻烦。您可以安全地使用java UUID
。
替代解决方案
如果您需要跨程序的多个调用使用唯一ID,请使用数据库序列。您可以要求DB缓存序列的下一个N个数,以使其快速合理,并且值将在调用之间保持不变。 UUID使用起来更方便,但两种解决方案都可以使用。如果您使用数据库,您将了解您已序列化的对象数。
答案 1 :(得分:0)
如果你的对象需要一个唯一的数字,那么为什么不做一个序列。您必须编写执行以下操作的自定义类: