Проверьте свои комментарии в коде: -
public boolean equals(Object o) {
//below line is comparing if o refers to the same current object
if (o == this) { return true; }
//below line is checking if o is null, in that case it will return false
if (o == null) { return false;}
//checking if the class of o is Book, if not return false
if (!o.getClass().equals(Book.class)) {return false; }
//Casting the o from Object to Book class
Book aBook = (Book) o;
//comparing the book object's year. title and author, if all three are equal then only two Book objects are equal
return aBook.year == year && aBook.title.equals(title) && aBook.author.equals(author);
}
Вы позвонит вышеупомянутый метод, как показано ниже: -
Book object1=new Book();
Book object2=new Book();
object1.equals(object2);
Сценарий 1: -Первый линия в чеках кода, будь object1 и объект2 относятся к одному и тому же объекту: -
Book object1=new Book();
Book object2=object1;
object1.equals(object2);
Над ситуацией обрабатывается в ваших пихтах t, вы можете видеть в сценарии 1, object2 - это в основном тот же текущий объект, который является объектом1.
Вашего нуля и класс условия можно записать как: -
if((o == null) || (o.getClass() != this.getClass())) return false; //preferred
Не получить соблазн использовать: -
if(!(o instanceof Book)) return false; //avoid
потому что сформулированное условие не возвращает ложь, если аргумент является подкласс классовой книги.
В последней части вашего метода equals вы просто сравниваете три атрибута двух объектов Book и называете два объекта равными, только если все три атрибута равны.
@ sᴜʀᴇsʜᴀᴛᴛᴀ No. Это [вне темы] (http://codereview.stackexchange.com/help/on-topic) в обзоре кода на нескольких уровнях. – Mast
@ Маст: Я не уверен, что это по теме. Независимо от того, подобные вещи можно найти в большинстве учебных пособий по Java или в обычном поиске Google (https://www.google.com/?gws_rd=ssl#q=java+equals+method+implementation) (первая пара хитов должно быть адекватным). Не знаю, почему этот вопрос повторно запрашивает материал, который был задан много раз на этом и других сайтах. –