在Java中,对对象进行编号的简单方法是什么



例如

创建的第一个对象知道它是";对象1";创建时。

所创建的第二个对象知道它是";对象2";创建时等

这实际上取决于用例,下面的对于大多数用例来说可能不是一个好的解决方案。

但通常情况下,您可以使用静态成员变量并在构造中递增它:

public class Example {
private static int counter = 0;
private final int id;
public Example() {
id = counter++;
}
}

请注意,一旦应用程序是多线程的,这也会导致同步问题:通常情况下,并发更新此静态变量是不安全的。要解决此问题,需要使用synchronized方法来递增变量,或者将其声明为AtomicInteger

您可以保留一个内部静态计数器(nextId(作为序列生成器,并保留一个实例字段来保留每个对象的值:

public class OrderedObject {
private static int nextId=1;
private int id=nextId++;

public int getOrder() {
return id;
}
public String toString()
{
return "OrderedObject-"+id;
}
public static void main(String args[])
{
System.out.println(new OrderedObject());
System.out.println(new OrderedObject());
System.out.println(new OrderedObject());
}

}

最新更新