所有路徑都必須返回。你不能定義一個「不總是」返回你所說的值的方法。 (至少不是強類型語言,就像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