![](/img/trans.png)
[英]Java Is there any elegant way to assign a default value to Number if that Number is null
[英]Elegant way to assign object id in Java
我有一个对象类...拉特说苹果。
每个苹果对象都有一个唯一的标识符(id)...我如何确保(优雅和有效)新创建的具有唯一ID。
谢谢
在Apple类中有一个static int nextId
并在构造函数中递增它。
确保增量代码是原子代码可能是谨慎的,所以你可以做这样的事情(使用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();
}
线程安全无需同步!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.