java: не удается найти символ; символ: переменной длины

#java

#java

Вопрос:

Я прошу прощения, если это слишком простой вопрос. Я понимаю, что каким-то образом мой [ Object o] находится вне области видимости, поэтому он не может найти символ.

Однако, похоже, я не могу решить эту проблему. Я совершенно не уверен, где что-то пошло не так. Я полагаю, что это последняя проблема в моем Задании, и она должна быть в полночь.

Любая помощь будет очень признательна 🙂

 public class Square implements Shape
{
    double length;

    public Square(double length)
    {
        this.length = length;
    }

    @Override
    public String toString()
    {
        return "Square";
    }

    @Override
    public boolean equals(Object o)
    {
        if (o == null)
            return false;
        if(this.getClass() != o.getClass())
            return false;
        if (o.length == this.length)
            return true;
        else
            return false;
    }

    @Override
    public int hashCode()
    {
        return (int)length % 50;
    }
    public double getPerimeter()
    {
        return length * 4;
    }
}
 

C:UsersRimZIdeaProjectsAssignment1srcSquare.java

Ошибка: (24, 22) java: не удается найти символ символ: местоположение переменной длины: переменная o типа java.lang.Объект

 if (o.*length* == this.length)
            return true;
 

^ вот в чем проблема

Комментарии:

1. Object у s нет поля length . Приведите объект и проверьте.

2. Итак, будет рассмотрен любой квадрат с длиной, кратной 50 == ? По крайней мере, это то, что говорит ваша реализация hashcode

Ответ №1:

Вам нужно привести свой Object в Square :

 Square otherSquare = (Square) o;
...
if (otherSquare.length == this.length)
    return true;