我试图为一个类中的每个对象生成一个新的唯一标识符,而不使用static nextID
字段来递增。使用它会在卸载和卸载程序时造成困难。生成唯一对象ID
我想出了一个解决方案,通过静态方法中的对象循环检查它们,但对我来说一些未知的原因,它不会退出while循环。
我一直在测试它在ideone.com here试图创建5个对象开始,虽然它甚至不会创建一个。
无需转到链接查看整个测试代码,下面是我正在使用的方法。
public static int newRandomID() {
int randomID = 0;
boolean notUnique = true;
while (notUnique) {
randomID = (int) (Math.random() * 999999 + 1);
for (Example e : examples) {
if (e.ID == randomID) {
notUnique = true;
break;
}
notUnique = false;
}
}
return randomID;
}
难道我只是犯了一个愚蠢的错误,我太盲目地看到,还是有一个原因,这是不工作?
几个一般指针:1)不要让名字比他们需要更复杂。将'notUnique'改为'unique'并且使用'!unique',你的意思是“不是'唯一''”。 2)使用'java.util.Random'生成一个具有上限的整数。 3)将遏制逻辑放在一个单独的方法中。你的错误会很明显,你的程序可以表示为'while(idExisists(randomID))randomID = rnd.nextInt(99999);'。 – aioobe