java中que_重写java Eques()方法-不工作吗?
重寫java Eques()方法-不工作嗎?
我遇到了一個有趣的(非常令人沮喪的)問題equals()方法,它導致了我認為經過良好測試的類崩潰,并導致了一個錯誤,我花了很長時間才找到它。
為了完整起見,我沒有使用IDE或調試器-只是好的老式文本編輯器和System.out。時間非常有限,這是一個學校項目。
總之-
我正在開發一個基本的購物車,它可以包含一個ArrayList的Book對象..為了實現addBook(),?removeBook(),和hasBook()購物車的方法,我想檢查一下Book已經存在于Cart..所以我走了-public?boolean?equals(Book?b)?{
...?//?More?code?here?-?null?checks
if?(b.getID()?==?this.getID())?return?true;
else?return?false;}
所有的測試都很好。我創建了6個對象并用數據填充它們。控件上的許多添加、移除和帶()操作。Cart一切都很好。我讀到你可以要么有equals(TYPE var)或equals(Object o) { (CAST) var }但認為既然起作用了,就沒什么大不了的了。
然后我遇到了一個問題-我需要創建一個Book對象只這個ID在它里面的書類。沒有其他數據可輸入。基本上如下:public?boolean?hasBook(int?i)?{
Book?b?=?new?Book(i);
return?hasBook(b);}public?boolean?hasBook(Book?b)?{
//?..?more?code?here
return?this.books.contains(b);}
突然,equals(Book b)方法不再起作用。如果沒有良好的調試器,這需要很長時間才能找到,并且假設Cart班級經過了適當的測試和修正。擦拭后equals()方法:public?boolean?equals(Object?o)?{
Book?b?=?(Book)?o;
...?//?The?rest?goes?here???}
一切又開始運轉了。這個方法決定不接受Book參數是有什么原因的,盡管它很清楚曾.?a?Book反對?唯一的區別似乎是它是從同一個類中實例化的,并且只填充了一個數據成員。我很困惑。拜托,放點光?
總結
以上是生活随笔為你收集整理的java中que_重写java Eques()方法-不工作吗?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 联想改成u盘启动不了怎么办 联想U盘启动
- 下一篇: java db 10.4.13_Spri