Я изучаю объектно-ориентированное программирование на Java в своей школе, и мне пришлось выполнять упражнение для сравнения Кругов.Метод класса равнозначен
Я имел круг класса с этими
частного Int идентификатор;
приватная строка bgColor;
приватная строка fgColor;
И внутри него мне пришлось использовать метод Equals для сравнения двух кругов (с помощью этих трех атрибутов): окружность равен другой окружности, если ее радиус и BG и fgColor одинаков.
public boolean equals(Object obj) {
boolean found;
if (obj == null) {
found = false;
}
if (getClass() != obj.getClass()) {
found = false;
}
final Circle other = (Circle) obj;
if (Double.doubleToLongBits(this.radius) == Double.doubleToLongBits(other.radius)) {
//found = false;
if (Objects.equals(this.bgColor, other.bgColor)) {
//found = false;
if (Objects.equals(this.fgColor, other.fgColor)) {
return true;
}//end if fgColor
else{
found = false;
}
}//end if bgcolor
else{
found = false;
}
}//end if radius
else{
found = false;
}
return found;
}
Но мой учитель сказал мне, что код выше «запутанный», но я не понимаю, почему.
Вы знаете лучшее решение?
Мой учитель хочет, чтобы мы Folow эту структуру (этот случай только сравнивая одно свойство):
public boolean equals (Object obj)
{
boolean b;
if(obj == null)
{
b = false;
}
else
{
if(this == obj)//same object
{
b = true;
}
else
{
if(obj instanceof Book)
{
Book other = (Book) obj;
b = (this.id == other.id);
}
else
{
b = false;
}
}
}
return b;
}
Да, это так. Очень смущает. –
@ Tiny Это было бы столь же запутанным, как и его код выше. – Kayaman
Вместо того, чтобы иметь отдельные 'else' и' ifs', используйте конструкцию 'else if'. Нет никакого преимущества в том, что у вас так много брекетов. – Kayaman