我試圖爲一個類中的每個對象生成一個新的唯一標識符,而不使用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