2013-03-23 40 views
0

我使用了db4o,并要确保我得到一个唯一的对象回来时,我用这样的代码:Java:是否可以在具有相同标识的不同运行时(不同JVM)期间创建两个对象?

public List<Object> getListOfObjects(final Object o){ 

     List<Object> result = db.query(new Predicate<Object>(){ 

      @Override 
      public boolean match (Object arg0){ 

      if(arg0.equals(o)){ 
       return true; 
       } 
      else{ 
       return false; 
      } 
     }); 

     return result; 
     } 

列表对象“结果”最好应该不超过1元多。然而,Java不可能在不同的运行时间(不同的JVM)创建具有相同身份的对象吗?如果这可能会发生,那么它会弄乱我的数据库。

当然,Java对象是否可以跨JVM具有相同的身份一定有答案。

-Alex

回答

1

如果覆盖了.equals你的对象()方法,那么它很容易有一个对象,它是等于多个实例。 equal()方法的全部用途是比较两个关于'语义/内容'相等的对象,它不会隔离任何唯一性。

现在,如果您没有重写任何等同的方法,则会比较对象标识(如使用==运算符)在JVM中身份是唯一的,并且从未有两个具有相同身份的对象。

Btw/Offtopic:如果将数千个对象存储在db4o中并使用您的查询,但是我的问题是询问不同对象的身份(==)是否可以在两个不同的JVM之间是相同的... ...更多关于这个here

+0

是的,谢谢你,我喜欢你所说的。我假设现在这是真的。 –

相关问题