使用UUID生成可重现的ID?

时间:2013-07-18 17:02:48

标签: java

我正在使用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;
}
}

3 个答案:

答案 0 :(得分:5)

您可以使用UUID.nameUUIDFromBytes(byte[] bytes) byte[] bytesRandom种植的SecureRandom

答案 1 :(得分:2)

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

更清晰的解决方案是定义一个类似IRandomUUIDGenerator的接口,并有两个实现:ConstantUUIDGenerator,您可以将其用于测试,并使用DefaultRandomUUIDGenerator实现生产代码。然后,您可以在配置文件中指定要使用的实现,具体取决于您的环境。

答案 2 :(得分:1)

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