0

我正在使用UUID.randomUUID().getLeastSignificantBits();生成唯一 ID。但是,我想在每次运行应用程序时生成相同的 ID 以调试我的代码。我怎样才能做到这一点?

编辑:感谢 zim-zam 我创建了这个解决问题的类。

public class IDGenerator {
private static Random random = new Random(1);
public static long getID() {
    long id;
    byte[] array = new byte[16];
    random.nextBytes(array);
    id = UUID.nameUUIDFromBytes( array ).getLeastSignificantBits();
    return id;
}
}
4

3 回答 3

6

你可以使用UUID.nameUUIDFromBytes(byte[] bytes)byte[] bytes从一个RandomSecureRandom你播种的地方得到的地方

于 2013-07-18T17:04:35.553 回答
2

我将创建自己的类,它包装了 UUID 类,并且可以接受某种标志来确定它是否处于调试模式,在这种情况下它将返回一个常量值或“生产”模式,在这种情况下它将按预期工作。

一个更干净的解决方案是定义一个像 IRandomUUIDGenerator 这样的接口并为其提供两个实现:可用于测试的 ConstantUUIDGenerator 和用于生产代码的 DefaultRandomUUIDGenerator 实现。然后,您可以根据您的环境在配置文件中指定要使用的实现。

于 2013-07-18T17:06:55.527 回答
1

使用java.util.Random,提供相同的种子。

于 2013-07-18T17:05:47.550 回答