创建的对象的ID生成器

我需要一个创建对象的类,为每个创建的对象分配一个ID。 此ID通常是类的int属性。 我想每次创建一个Object时增加这个值(ID),然后从1开始分配给该对象。我觉得我需要一个静态int属性。

如何初始化此静态属性?

我应该创建一个单独的方法来增加在构造函数中调用的ID(作为ID生成器)吗?

一般来说,最有效和最精心设计的方式是什么?

就像你提到的那样,为id使用static int ,并在创建新对象时增加它。

 class MyObject { private static int counter = 0; public final int objectId; MyObject() { this.objectId = counter++; } } 

请注意,如果MyObject是由多个线程创建的,则需要保护counter++ (例如,使用AtomicInteger作为其他答案建议)。

您也可以尝试java.util.concurrent.AtomicInteger,它会生成ID

  1. primefaces方式和
  2. 顺序

您可以在静态上下文中使用它,例如:

 private static final AtomicInteger sequence = new AtomicInteger(); private SequenceGenerator() {} public static int next() { return sequence.incrementAndGet(); } 

我建议使用AtomicInteger ,它是线程安全的

 class MyObject { private static AtomicInteger uniqueId=new AtomicInteger(); private int id; MyObject() { id=uniqueId.getAndIncrement(); } }