Предоставить реализации методов equals, hashCode и compareTo для класса
У меня есть экзамен, и он был в дураках, и я не совсем уверен, как это сделать, это не домашняя работа, а просто попытка понять, как это сделать. Благодарю.
public class Book{
private final String title;
private final String author;
private final int edition;
private Book(String title, String author, int edition)
{
this.title = title;
this.author = author;
this.edition = edition;
}
public String getTitle()
{
return title;
}
public String getAuthor()
{
return author;
}
public String getEdition()
{
return edition;
}
}
Мне нужно предоставить реализации методов equals, hashCode и compareTo для приведенного выше кода.
Я не уверен, как это сделать, было бы что-то похожее на это для метода CompareTo?
title.compareTo(title);
author.compareTo(author);
edition.compareTo(edition);
Спасибо, любая помощь будет принята с благодарностью.
3 ответа
Ваше сравнение должно быть таким:
title.compareToIgnoreCase(otherTitle);
...
равна:
if(null == title || null == author || null == editor)
{
return false;
}
if(!title.equals(otherTitle)
{
return false;
}
if(!author.equals(otherAuthor)
{
return false;
}
if(!editor.equals(otherEditor)
{
return false;
}
return true;
IDE, такие как Eclipse, могут генерировать hashCode
а также equals
методы для вас (Source -> генерировать hashCode() и equals()). Вы даже можете указать, какие поля объекта должны совпадать, чтобы он считался "равным".
Например, вот что Eclipse генерирует для вашего класса:
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((author == null) ? 0 : author.hashCode());
result = prime * result + edition;
result = prime * result + ((title == null) ? 0 : title.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Book other = (Book) obj;
if (author == null) {
if (other.author != null)
return false;
} else if (!author.equals(other.author))
return false;
if (edition != other.edition)
return false;
if (title == null) {
if (other.title != null)
return false;
} else if (!title.equals(other.title))
return false;
return true;
}
Взгляни на это.
Вы можете использовать компоновщики в этом пакете для создания реализаций по умолчанию.