Java泛型 - 任何运行时的好处

时间:2011-02-16 03:44:46

标签: java generics

我想知道Java5提供的Generics是否有任何运行时优势。我的意思是,我知道我们可以为类/集合实现类型安全,并为泛型提供一系列可能的对象,但是在编译时间之前我们在运行时获得了什么好处?

3 个答案:

答案 0 :(得分:10)

Java泛型在运行时通过erasure删除,因此性能应该相同。

答案 1 :(得分:1)

有关它们的一些信息可通过反思获得(例如在http://download.oracle.com/javase/6/docs/api/java/lang/reflect/Constructor.html#getTypeParameters%28%29中),但它们不会使您的程序运行得更好。

CoolBeans,我认为他的意思是“超出”编译时间的好处。

答案 2 :(得分:0)

是的 - 但这很小。

使用泛型时,不需要使用instanceof并在任何地方进行转换,因此不会生成对这些指令进行类型检查的字节码指令。在缺点方面,如果您链​​接到类的旧版本而不重新编译它们,则可以在运行时结束一些相当低级别的错误。

尽管如此,如果你大量使用一个需要强制转换的紧密循环,那么我认为泛型可能会加速一点点。但是性能提升不是使用它们的重点。