亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

為什么我重寫了equals方法結果還是返回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方法中的代碼以及實現結果

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();
			//創建一個新的課程對象,ID和名稱
			Course?course2?=?new?Course();
			course2.name?=?name;
			System.out.println("新創建對象"+course2.name);
			System.out.println("備選課程中是否包含課程:"?+course2.name?+?":"?+?
					coursesToSelect.contains(course2));
			//創建一個新的課程對象,ID和名稱,與course對象完全一樣
			Course?course3?=?new?Course(course.id,course.name);
			System.out.println("新創建對象"+course3.name);
			System.out.println("備選課程中是否包含課程:"?+course3.name?+?":"?+?
					coursesToSelect.contains(course3));
		}

http://img1.sycdn.imooc.com//5829367a0001fb4109830256.jpg

第二次我直接用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;
	}

結果卻是:

http://img1.sycdn.imooc.com//582936d30001f31e12370328.jpg

實在是不知道哪里出錯了,求解答

正在回答

2 回答

17行改成this.name.equals(Course.name)

0 回復 有任何疑惑可以回復我~

你自己寫的判斷條件寫錯了,在你重寫equals方法里面的17行,你寫的是this.equals(course.name),用對象和成員變量相比,肯定判斷錯誤,然后進入else的判斷,返回false。

望采納,謝謝。

1 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

為什么我重寫了equals方法結果還是返回false呢

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號