我來自c#背景,java中的泛型如何與c#相比? (基本用法)java和c#泛型之間的語法區別#
1
A
回答
5
這是一個相當大的問題,說實話 - 最大的區別不在於語法,而在於行爲......在這一點上,他們真的非常不同。
我建議你閱讀Sun generics tutorial和Angelika Langer's Java Generics FAQ。儘管從C#/ .NET首先儘可能地忘掉你對泛型的所有知識。特別是,雖然.NET泛型類型在執行時保留了類型參數,但Java泛型並不是由於類型擦除。
因此,換句話說,在C#中,你可以寫:
public class GenericType<T>
{
public void DisplayType()
{
Console.WriteLine(typeof(T));
}
}
...你不能在Java中:(
此外爲此,.NET泛型可以有值類型變量類型,而Java泛型不能(所以你必須使用List<Integer>
而不是List<int>
爲例)。
這些可能是兩個最大的差異,但它是值得努力學習Java根兒從頭開始,而不是從C#中的「差異」。
1
有很多關於這方面的文章,但有one notable example討論了泛型在Java中的一些差異和侷限性。
這裏是從現有的集合教程採取了一個簡單的例子:
// Removes 4-letter words from c. Elements must be strings
static void expurgate(Collection c) {
for (Iterator i = c.iterator(); i.hasNext();)
if (((String) i.next()).length() == 4)
i.remove();
}
下面是修改爲使用泛型same example:
// Removes the 4-letter words from c
static void expurgate(Collection<String> c) {
for (Iterator<String> i = c.iterator(); i.hasNext();)
if (i.next().length() == 4)
i.remove();
}
相關問題
- 1. Java和C#和.NET之間的區別
- 2. 使用和不使用泛型的方法之間的區別
- 3. C++:指針語法之間的區別
- 4. ASP和C#之間的語義區別?
- 5. 語法之間的區別
- 6. C#:方法類型之間的區別
- 7. C和JAVA程序之間的區別
- 8. objective-c和java之間的區別
- 9. ruby和python之間的語法區別?
- 10. 瞭解方法,泛型類型之間區別的問題
- 11. 泛型類中這些語句之間的區別是什麼?
- 12. 使用泛型類和泛型集合的聲明之間的區別類型
- 13. Symbian C++和規範C++之間的語法區別是什麼?
- 14. Java泛型與T之間的區別?擴展T
- 15. Java泛型語法
- 16. 參數和T泛型約束之間的區別是什麼? C#
- 17. C#「var」和C++「auto」之間的區別
- 18. C和C++之間的區別
- 19. 這兩種語法之間的區別
- 20. Return和Break之間的區別語句
- 21. 語言和框架之間的區別
- 22. 'wait'和'@'語句之間的區別
- 23. 語句和函數之間的區別
- 24. 函數和語句之間的區別
- 25. Java泛型:列表<E>和列表<?>之間有區別嗎?
- 26. Java泛型的語法
- 27. 普通語言和普通語法之間的區別
- 28. PocketSphinx關鍵短語和語法之間的區別
- 29. Haskell和Haskell類語言之間的類型聲明語法區別
- 30. scala和java枚舉之間的區別
這可能有助於http://stackoverflow.com/questions/864773 /資源換取學習Java的泛型 – Zaki 2010-01-06 17:10:14