不能在原语上调用 Equals 方法>Override Equals 方法不起作用

我在覆盖Equals方法时获得了编译错误,更具体地在Float和Double括号,权重和价格属性,HashCode方法似乎有效,所以我不知道问题在我的代码中的位置。该代码还包含一个接口 Vehicle,但我不希望错误来自接口。我不确定我是否完全理解了 Equals 方法 。有人可以帮助我吗?


 package info.vehicle;


    import java.io.Serializable;


    public class Car implements Vehicle,Serializable,Cloneable {

    private float weight;

    private double price;

    private String producer;



    public Car()

    {


    }


    public Car(float _weight,double _price,String _producer)

    {

     weight=_weight;

     price=_price;

     producer=_producer;

    }


    public void setProducer(String _producer) throws Exception

    {

        if(_producer!=null && _producer.length()>1)

            this.producer=_producer;


    else

    {

        throw new Exception("Producer must not be null.");

    }

    }


    public void setPrice(double _price) throws Exception

    {

        if(_price>0)

        {

            price=_price;

        }

        else

        {

            throw new Exception("Price must not be 0.");

        }

    }


    public void setWeight(float _weight) throws Exception

    {

        if(weight>0)

        {

            weight=_weight;

        }

        else

        {

            throw new Exception("Weight must be different than 0.");

        }


    }


    @Override

public boolean equals(Object obj) {

    Car other=(Car)obj;

    if(((Float)(this.weight)).equals(Float)other.weight)

    {


    if((Double)(this.price)).equals((Double)other.price))

       {

        if(this.producer.contentEquals(other.producer))

          {

             return super.equals(obj);

          }

       }

    }


    return false;


    @Override

    protected Object clone() throws CloneNotSupportedException {

        Car temp=new Car();

        temp.weight=this.weight;

        temp.price=this.price;

        temp.producer=this.producer;

        return temp;

    }


    @Override

    public int hashCode() {

        final int prime=31;

        int result=0;

        result+=(int)weight*prime;

        result+=(int)price*prime;

        result+=producer.length()*prime;

        return result;

    }



千万里不及你
浏览 129回答 1
1回答

人到中年有点甜

简单的语法错误。equals(Float)other.weight)应该是equals((Float) other.weight)和if((Double)(this.price))应该是if(((Double)(this.price))但是你为什么要明确地铸造它们呢?
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java