2017-07-25 52 views
-2

我目前是一名實習生,正在嘗試向更有經驗的開發人員學習,其中一人聲明所有函數返回對象。我問他爲什麼,他回答說「它適用於所有事情」。如果返回類型'Object'適用於所有值類型返回,爲什麼我們打擾函數聲明特定的返回值?

那麼,爲什麼我應該聲明具有特定返回值類型的函數呢?

+6

這是一個盒子,你必須與盒子互動,但你不允許打開盒子,你只需猜測,如果你猜錯了,它會爆炸 – MadProgrammer

+1

*「更有經驗」*。 *「聲明所有函數返回對象」* - 選擇一個。那個人沒有經驗,也不是一個好的程序員。我建議你不要再問那個人。嘗試找到一個真正知道如何編寫好東西的人。 – Tom

+0

請不要在您的問題中編輯噪音。你要感謝別人對他們很好的答案,然後給予好評(如果你有> 15點聲望)和/或接受最好的答案。 – Tom

回答

2

整體思路是要如何接口返回的對象,Java中的所有類擴展對象,這樣是可以做到這一點,但指定的返回類型時要對象,對象將是實際的接口,所以你會需要一個強制轉換才能使用您的特定類中定義的任何其他方法或屬性。

除了令人頭疼的情況之外,您不能安全地假定返回對象實際上是您推定的類的實例,因此您還需要檢查返回對象是否是您希望進行接口的類的實例通過。

+0

謝謝先生。祝你今天愉快。 – GorkemSahin

0

這個例子可以幫助你:

你從亞馬遜購買新手機,但亞馬遜向您發送鉛筆因爲 亞馬遜不能發送一個電話,就可以送什麼東西給你。

你提到的方法相同的帳戶,如果我預計String沒有什麼可以阻止不發送String而是Integer的方法,該方法會返回一個Object左右。