2013-02-10 59 views
0

如果我有一些对象的某些属性发生更改。我怎样才能最好地跟踪对象?可能会创建一个ID。什么可能是有用的创建这样一个ID?创建时计数的静态字段?如何最好地生成不存储在数据库中的对象的键?

class Foo { 
    String bar; 
    int id; 

    static int counter = 0; 

    Foo() { 
    this.id = counter++; 
    } 
} 

我可以做得更好吗? 我不想将对象存储在数据库中,我不想使用HashMap等。

+1

http://www.javapractices.com/topic/TopicAction.do?Id= 56 – 2013-02-10 12:14:57

+0

我知道UUID。但是,这是100%保存?我的意思是,当然,UUID不太可能是双重生成的。如果在这种情况发生的任何时候Buf,那将是一场灾难。因此,使用UUID时,如果没有其他对象已经包含该UUID,则必须对创建的所有对象进行迭代,以便100%确定。认为这是非常低效的。 – membersound 2013-02-10 12:17:57

+1

http://en.wikipedia.org/wiki/UUID#Random_UUID_probability_of_duplicates – 2013-02-10 12:21:34

回答

1

对于单线程应用程序,您的方法是确定的。对于多线程,你可以使用

AtomicInteger idGen = new AtomicInteger(); 

获得一个ID,你会调用:

idGen.getAndIncrement(); 

JavaDoc AtomicInteger

相关问题