Java 如何为类的每个对象生成唯一的Id?

Java 如何为类的每个对象生成唯一的Id?,java,Java,java.util.UUID是否适用于java中的类?也就是说,我有一个需要唯一id的类,这样每当我在main方法中构造该类的对象时,它都会有一个唯一的id号 构造函数可能如下所示: class flight{ private UUID id; public void flight(){ id = UUID.randomUUID(); } } public static void main(String[] args){

java.util.UUID
是否适用于java中的类?也就是说,我有一个需要唯一id的类,这样每当我在main方法中构造该类的对象时,它都会有一个唯一的id号

构造函数可能如下所示:

class flight{
        private UUID id;

        public void flight(){
           id = UUID.randomUUID();
        }
}
public static void main(String[] args){
    flight[] allflights = new flight[100];
    flight tempFlight;

    for(int i=0; i<100; i++){
        tempFlight = new flight()
        allflights[i] = tempFlight;
    }
主方法调用可能如下所示:

class flight{
        private UUID id;

        public void flight(){
           id = UUID.randomUUID();
        }
}
public static void main(String[] args){
    flight[] allflights = new flight[100];
    flight tempFlight;

    for(int i=0; i<100; i++){
        tempFlight = new flight()
        allflights[i] = tempFlight;
    }
publicstaticvoidmain(字符串[]args){
航班[]所有航班=新航班[100];
飞行节拍飞行;

对于(inti=0;i,你的问题的答案就在你的问题中

运行打印UUID的代码,您会发现,添加
System.out.println
有什么困难

公共静态void main(字符串[]args){ 航班[]所有航班=新航班[100]; 飞行节拍飞行

for(int i=0; i<100; i++){
    tempFlight = new flight()
    allflights[i] = tempFlight;
    System.out.println(tempFlight.getId());
}
for(int i=0;i正如所解释的,这确实会为每个对象生成一个唯一的id:

用于检索类型4(伪随机生成)
UUID
的静态工厂。
UUID
是使用加密强伪随机码生成的 数字发生器


不过,正如注释中所解释的。

是的,这就是UUID的用途。每次调用randomUUID(),都会得到一个新的随机UUID;UUID是128位的值


因此,从理论上讲,当使用随机UUID时,可能会发生冲突,但正如它所说的,使用了一个加密强大的随机生成器,我认为您不必担心这种可能性。

可能重复的情况是,不确定您是否有机会查看第一个响应,其中讨论了何时可能发生冲突!为什么您会ant来做这件事吗?你不能用一个原子整数作为计数器吗?看看。看起来这就是你想要的。这应该是一个注释,即使是这样,也不是一个有用的注释。手动观察几个UUID并不能验证它们是否都是唯一的。所以实际的问题是通用唯一标识符是否唯一?不,q问题是OPs代码中生成的UUID是否唯一。这可能是一个非常简单的问题,但这并不意味着不能简单地回答。我真的不明白你的意思。你问的是唯一ID是否唯一?:/正如Vidkor和christian.vogel在评论中指出的,UUID事实上不一定是唯一的。但是r、 我批评你的答案的主要原因是它不友好,对OP没有帮助。这不是一个好的答案。它真的会生成唯一的id吗?我认为UUID实际上是唯一的,而不是有保证的。因此可能两个对象共享同一个id。这都取决于使用的算法,因为它是v很长的随机生成的数字(我想是128位的Java)。但是说:“也许,它永远不会发生”是正确的。是的,我已经加入了Vidkors的评论,它链接到了一个关于这个问题的问题。