2014-03-27 57 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。)