生成唯一的对象 ID

Spe*_*rds 2 java class object uniqueidentifier

我试图为类中的每个对象生成一个新的唯一标识符,而不使用static nextID字段来递增。使用它会在卸载和卸载程序时产生复杂性。

我想出了一个解决方案,以静态方法循环遍历所有对象,检查所有对象,但由于某些我未知的原因,它不会退出 while 循环。

我一直在 ideone.com 上对其进行测试,尝试从一开始就创建 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;
}
Run Code Online (Sandbox Code Playgroud)

我是否刚刚犯了一个愚蠢的错误,我太盲目而看不到,或者有什么原因导致这不起作用?

Sha*_*her 5

如果您需要的只是一个唯一标识符(不需要是连续的)并且它不必是整数,请查看java.util.UUID