我正在使用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;
}
}
答案 0 :(得分:5)
您可以使用UUID.nameUUIDFromBytes(byte[] bytes)
byte[] bytes
或Random
种植的SecureRandom
答案 1 :(得分:2)
我会创建自己的类来包装UUID类,并且可以接受某种标志来确定它是否处于调试模式,在这种情况下它将返回一个常量值或“生产”模式,在这种情况下它将起作用预期
更清晰的解决方案是定义一个类似IRandomUUIDGenerator的接口,并有两个实现:ConstantUUIDGenerator,您可以将其用于测试,并使用DefaultRandomUUIDGenerator实现生产代码。然后,您可以在配置文件中指定要使用的实现,具体取决于您的环境。
答案 2 :(得分:1)
使用java.util.Random
,提供相同的种子。