2010-03-21 105 views
0

在評論this answer有人說泛型的缺乏在編程中意味着什麼?

我不得不downvote一般建議Apache的百科全書,因爲它確實是一個機會,50:50如果你發現一些有用的東西還是不上。那裏肯定有很多寶石,但也有很多糟糕和過時的東西,例如在這一點上令人擔憂的泛型缺乏只是不可原諒的 - 即使引入它們的Java 5已經達到了EOL!

在這種情況下,「缺乏泛型」是什麼意思?你能用通俗的話來解釋嗎?

+5

我想用普通話來看這個問題。你在問什麼?鏈接到另一個問題是好的,如果它是相關的,但你的*問題*應該在這裏列出*。 – jalf 2010-03-21 15:43:22

+0

它在標題中,不是嗎? – symfony 2010-03-21 15:46:42

+3

-1不採取方向。 – 2010-03-21 15:47:56

回答

0

如果沒有泛型,您將無法「泛化」您的代碼,也就是說,您將無法在不同的對象類型中使用相同的代碼。

6

提到的「缺乏泛型」是指API暴露非泛型方法和類,即在Object上工作的方法,並且通常強制用戶使用強制轉換並失去某種類型安全性。通用API具有類型參數,並且可以處理這些類型的對象,而不需要強制轉換並保持編譯時類型安全性。通過比較來ArrayList使用ArrayList<T>

// Non-generic (before Java 5) 
ArrayList l = /*...*/; 
Foo x = (Foo) l.get(42); 
l.add(new Bar()); // Compiler is fine with this 

// Generic (from Java 5 onwards) 
ArrayList<Foo> l = /*...*/; 
Foo x = l.get(42); 
l.add(new Bar()); // Compiler complains that you can't add Bar to a list of Foo 
0

泛型可以創建不同類型對象的工作方法和類。如果不使用泛型,則必須在對象類型之間進行轉換,並丟失一些類型安全性。

獲得有關仿製藥的更多信息here