在Java中分配对象ID的优雅方式
我有一个对象类…拉特说苹果。
每个苹果对象都有一个唯一的标识符(id)…我如何确保(优雅和有效)新创建的具有唯一ID。
谢谢
在Apple类中有一个static int nextId
并在构造函数中递增它。
确保增量代码是primefaces代码可能是谨慎的,所以你可以做这样的事情(使用AtomicInteger)。 这将保证如果两个对象完全同时创建,则它们不共享相同的Id。
public class Apple { static AtomicInteger nextId = new AtomicInteger(); private int id; public Apple() { id = nextId.incrementAndGet(); } }
使用java.util.UUID.randomUUID()
它不是int
,但保证是唯一的:
表示不可变通用唯一标识符(UUID)的类。
如果您的对象以某种方式进行管理(例如通过某种持久性机制),则通常会出现管理器生成ID的情况 – 例如,从数据库中获取下一个ID。
相关: Jeff Atwood关于GUID (UUID) 的文章 。 但是,它与数据库相关,但从您的问题中不清楚您是否希望保留对象。
你有没有想过使用UUID类。 您可以调用randomUUID()函数每次创建一个新的id。
还有另一种获取唯一ID的方法。 不要使用int或其他数据类型,只需创建一个类:
final class ID { @Override public boolean equals(Object o) { return this==o; } } public Apple { final private ID id=new ID(); }
线程安全无需同步!