因此,在我们学习Java的第一次上学,我们想模仿我们有一个名为“图书”两个阶级一个Java libray应用程序和另外一个名称“,并有可能没有一本书在同一货架同一ISBN,所以我所做的就是像架子类的内部下面,它工作正常。我什么时候应该重写等方法在Java中
private boolean checkIsbnNumber(Book book){
boolean isbnTaken = false;
for(Book bList : this.bookList){
if(bList.getIsbn().equals(book.getIsbn())){
System.out.println("The books isbn number is taken");
isbnTaken = true;
}
}
return isbnTaken;
}
但是我们lecturue告诉我们如下,走在book class并重写散列和equals方法如下:
@Override
public boolean equals(Object obj) {
if (obj instanceof Book)
return isbn.equals(((Book)obj).isbn);
else
return false;
}
@Override
public int hashCode() {
int hash = 3;
hash = 53 * hash + Objects.hashCode(this.isbn);
return hash;
}
然后再次在货架类中进行以下操作。
public boolean checkISBN(Book b){
boolean isbnExists = false;
for (Book bList : bookList)
{
if(bList.getIsbn().equals(b.getIsbn())){
System.out.println("Book ISBN already exist");
isbnExists = true;
}
}
return isbnExists;
}
我想知道的是做这件事的重点是什么?有什么好处吗?为什么我们再次在equals方法中调用equals方法?一些帮助将不胜感激。
嗯...我没有看到区别对象。除了私有和公共之外,唯一明显的变化是变量/方法名称和输出文本。 (顺便说一下,在这里输出文本看起来是错误的。)实际上,*方法究竟是怎样工作的,并没有改变一点。 – cHao 2014-12-06 17:52:39