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

时间:2012-08-22 06:49:54

标签: 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){
    flight[] allflights = new flight[100];
    flight tempFlight;

    for(int i=0; i<100; i++){
        tempFlight = new flight()
        allflights[i] = tempFlight;
    }

这是否会为飞行阵列内的所有航班生成唯一的ID?

3 个答案:

答案 0 :(得分:3)

正如documentation所解释的那样,这确实会为每个对象生成一个唯一的id:

  

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

正如Vidkor在评论中解释的那样,there is a chance of collision

答案 1 :(得分:2)

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

所以理论上你可以在使用随机UUID时遇到冲突,但是因为它说使用了加密强大的随机生成器,我认为你不需要为这种可能性而烦恼。

答案 2 :(得分:-1)

你问题的答案就在你的问题中。

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

public static void main(String [] args){     flight [] allflights = new flight [100];     飞行tempFlight;

for(int i=0; i<100; i++){
    tempFlight = new flight()
    allflights[i] = tempFlight;
    System.out.println(tempFlight.getId());
}