我在覆盖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."); } } @Overridepublic 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; }
1 回答
人到中年有点甜
TA贡献1895条经验 获得超7个赞
简单的语法错误。
equals(Float)other.weight)
应该是
equals((Float) other.weight)
和
if((Double)(this.price))
应该是
if(((Double)(this.price))
但是你为什么要明确地铸造它们呢?
添加回答
举报
0/150
提交
取消