所有路径都必须返回。你不能定义一个“不总是”返回你所说的值的方法。 (至少不是强类型语言,就像Java一样)。问题是,你说如果给定的对象是一个圆,并且它与这个对象(实例)具有相同的宽度,那么它就是同一个对象。但是如果对象不是一个圆,你永远不会告诉编译器?或者它是一个,但没有相同的宽度?
解决该问题的正确方法是在if语句中添加else子句,将其变为扩展的if语句。让我们一起来看看:
@Override
public boolean equals(Object obj)
{
if(obj == this)
{
return true;
}
else if(obj instanceof Circle)
{
Circle circle = (Circle) obj;
if(circle.getWidth() == getWidth())
return true;
}
return false; //this is what's missing, now the compiler knows what to do
}
}
了怀疑这样的,你可以亲自给我发短信。如果你不断问这样的问题,人们会在这里冷落你。直接把它们发给我,我会给你提供答案(如果我清醒并知道答案),否则我会冒你自己的名誉,以防我不知道答案,因为我有一点点空闲。
卡洛斯,你能给我一个休息吗?不知道有4个空格在那里。我不想吸引同情或任何其他的感觉,我只是想帮助别人,而不是炫耀。我经常犯错,这就是为什么我认同那些错误的人。不仅模糊不清,而且基本的东西都是错误的。不管他们的问题是什么,人们都应该得到尊重和实际答案。我个人和卑鄙的观点只是,我希望它不会干扰网站?
考虑这一点,会发生什么如果'obj'不等于'this'并且'obj'不是'Circle'? – Zircon
在末尾放置一个'return false;',因为否则可能达到方法的末尾而不会遇到'返回'语句 – AntonH
欢迎来到SO,请编辑您的帖子以给出确切的错误,近似值不会帮助,需要标点符号和例外的完整英文句子 – Gray