為什么我重寫了equals方法結(jié)果還是返回false呢
第一種,我用了老師介紹的equals重寫方法
@Override
public?boolean?equals(Object?obj){
if(this?==?obj){
return?true;
}
if(obj?==?null)
return?false;
if(!(obj?instanceof?Course))
return?false;
Course?course?=?(Course)obj;
if(this.name?==?null){
if(course.name?==?null)
return?true;
else
return?false;
}else{
if(this.equals(course.name))
return?true;
else
return?false;
}這是我contains方法中的代碼以及實(shí)現(xiàn)結(jié)果
public?void?testListContains(){
//取得備選課程序列的第0個元素
Course?course?=?coursesToSelect.get(0);
//打印輸出coursesToSelect是否包含course對象
System.out.println("取得對象"+course.name);
System.out.println("備選課程中是否包含課程:"?+course.name?+?":"?+?
coursesToSelect.contains(course));
//提示輸入課程名稱
System.out.println("請輸入課程名稱");
String?name?=?console.next();
//創(chuàng)建一個新的課程對象,ID和名稱
Course?course2?=?new?Course();
course2.name?=?name;
System.out.println("新創(chuàng)建對象"+course2.name);
System.out.println("備選課程中是否包含課程:"?+course2.name?+?":"?+?
coursesToSelect.contains(course2));
//創(chuàng)建一個新的課程對象,ID和名稱,與course對象完全一樣
Course?course3?=?new?Course(course.id,course.name);
System.out.println("新創(chuàng)建對象"+course3.name);
System.out.println("備選課程中是否包含課程:"?+course3.name?+?":"?+?
coursesToSelect.contains(course3));
}
第二次我直接用JAVA中自動生成的重載equals方法
@Override
public?boolean?equals(Object?obj)?{
if?(this?==?obj)
return?true;
if?(obj?==?null)
return?false;
if?(getClass()?!=?obj.getClass())
return?false;
Course?other?=?(Course)?obj;
if?(id?==?null)?{
if?(other.id?!=?null)
return?false;
}?else?if?(!id.equals(other.id))
return?false;
if?(name?==?null)?{
if?(other.name?!=?null)
return?false;
}?else?if?(!name.equals(other.name))
return?false;
return?true;
}結(jié)果卻是:

實(shí)在是不知道哪里出錯了,求解答
2016-11-26
17行改成this.name.equals(Course.name)
2016-11-14
你自己寫的判斷條件寫錯了,在你重寫equals方法里面的17行,你寫的是this.equals(course.name),用對象和成員變量相比,肯定判斷錯誤,然后進(jìn)入else的判斷,返回false。
望采納,謝謝。