我在覆盖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;
}
人到中年有点甜
相关分类