不能在基元上调用Equals方法 - > Override Equals方法不能正常工作-beginner在Java中的错误

问题描述 投票:0回答:1

我在覆盖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;
    }






        @Override
        public String infoVehicle() {

            return producer;
        }

    }
java override
1个回答
2
投票

简单的语法错误。

equals(Float)other.weight)

应该

equals((Float) other.weight)

if((Double)(this.price))

应该

if(((Double)(this.price))

但是你为什么要明确地施展它们呢?

© www.soinside.com 2019 - 2024. All rights reserved.