创建的对象的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
- primefaces方式和
- 顺序
您可以在静态上下文中使用它,例如:
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(); } }