2014-03-27 60 views
0

我正在写一个应用程序,并在某些时候我一定要比较两个数组列表或两个对象,我定义了一个名为类文章写了这样的代码比较两篇文章比较机器人

public boolean aredifferent(){ 

    Article art1 = new Article(); 
    art1.setBm(null); 
    art1.setDesc("he"); 
    art1.setImagelink("www"); 
    art1.setLink("www"); 
    art1.setTitle("ti"); 

    Article art2 = new Article(); 
    art2.setBm(null); 
    art2.setDesc("he"); 
    art2.setImagelink("www"); 
    art2.setLink("www"); 
    art2.setTitle("ti"); 
    boolean diff; 
    if(art1.equals(art2)){ 
     diff = false; 
    }else{ 
     diff = true; 
    } 


    return diff; 

} 

的问题,我的对象有这种方法返回true,我不明白为什么。有任何想法吗?有没有不同的方式来比较Android中的对象?

谢谢

+0

阅读此页。 [链接] http://stackoverflow.com/questions/15885991/override-equals-method-only-of-a-java-object – Amadas

回答

0

检查equals()如何为类实现的,最好的猜测是,你还没有覆盖的equals()方法,它是依靠Object的实施

0

我假设你没有为你的文章类定义一个自定义的“等号”方法?如果是这样,art1.equals(art2)始终返回false的原因是因为Java中的默认equal方法通过检查两个对象在内存中是否具有相同地址来工作。

由于您正在创建两个不同的Article实例,因此它们显然不会共享相同的内存地址,因此equals将始终返回false。您可以通过执行类似art1.equals(art1)的测试 - 在这种情况下,您的方法表现得如预期。

若要解决此问题,您需要覆盖Article类中的equals方法,并创建一个新的版本,以明确检查Article类中的字段。 (您也应该定义使用这些相同字段的定制版本hashCode。)