2013-07-22 33 views
-1

是什麼方法返回<T延伸的BaseClass>&基類

  1. public <T extends BaseClass> T myMethod(String p1, String p2) {}

  2. public BaseClass myMethod(String p1, String p2) {}

哪個更好這兩種方法簽名之間的差和是什麼適當的地方應該使用這些地方。

好吧我知道泛型,我問這個問題的原因是這兩個方法都可以返回基類的擴展,我碰到了一段使用泛型版本的代碼,我試圖弄清楚爲什麼?

+0

您需要了解泛型。 – SLaks

+0

downvote的原因? – RegisteredUser

+0

閱讀關於泛型的java教程。 –

回答

6

1.中的簽名將您從方法返回值的倒數轉化爲BaseClass的特定子類中。然而,它本質上是類型不安全的,因爲T僅從調用此方法的表達式的類型推斷。換句話說,T是「無論你想要它」,這顯然不能工作,因爲該方法返回一個確定類型的對象。

如果你有一個T -typed 參數的方法,或T參與作爲這樣的說法的類型參數,那麼這個簽名纔有意義;這種方式很少。

相關問題