2

我正在准备一个 Java 库,该库需要为生成的对象分配一个唯一的 id 以进行序列化。一旦生成了唯一的 id,我必须确保下次使用该库时,不可能将 id 重新分配给我过去已经保存的对象。

现在,我看到Stackoverflow中的许多人建议依赖几个选项,即UUID, SecureRandom,但我不确定这些类是否适合我的需求,也不知道如何使用它们。

拜托,您能否向自己介绍要使用的正确实用程序以及如何生成 id?

欢迎使用基于 Guava/Apache 实用程序的解决方案。

4

2 回答 2

2

生成重复 UUID 的概率非常低。我不知道不同机器上的 2 个 UUID 实例生成相同 ID 的可能性,但是 UUID 在 JVM 中应该是唯一的。我不会为了生成 UUID 而嵌入数据库的麻烦。你可以安全地使用java UUID

替代解决方案

如果您需要跨多个程序调用的唯一 ID,请使用数据库序列。您可以要求数据库缓存序列的下 N 个数字,以使其合理快速,并且该值将在调用之间保持不变。UUID 使用起来更方便,但两种解决方案都可以使用。如果您使用数据库,您将了解已序列化的对象数量。

于 2013-04-26T09:58:51.517 回答
0

如果您的对象需要一个唯一的编号,那么为什么不只是做一个序列。您必须编写一个执行以下操作的自定义类:

  • 这将是一个单身人士
  • 找到对象在启动时使用的最后一个值
  • 有一个像 getNext 这样的方法,它增加 lastValue 并返回对象要使用的值。
  • 使其线程安全。
于 2013-04-25T09:52:23.740 回答