2010-03-21 50 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