Java泛型-任何运行时好处

Java泛型-任何运行时好处,java,generics,Java,Generics,我想知道Java5提供的泛型是否有任何运行时优势。我的意思是,我知道我们可以实现类/集合的类型安全,并允许泛型具有一系列可能的对象,但我们在编译之前的运行时是否有任何好处?Java泛型在运行时通过删除,所以性能应该是相同的。Java泛型在运行时通过删除,所以性能应该是相同的。关于它们的一些信息可以通过反射(比如in)获得,但它们不会使程序运行得更好 CoolBeans,我把他的意思理解为“超越”编译时间的好处。关于它们的一些信息可以通过反射(比如in)获得,但它们不会使程序运行得更好 CoolB

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

Java泛型在运行时通过删除,所以性能应该是相同的。

Java泛型在运行时通过删除,所以性能应该是相同的。

关于它们的一些信息可以通过反射(比如in)获得,但它们不会使程序运行得更好


CoolBeans,我把他的意思理解为“超越”编译时间的好处。

关于它们的一些信息可以通过反射(比如in)获得,但它们不会使程序运行得更好


CoolBeans,我把他的意思理解为“超越”编译时间的好处。

是的,但这很小

当您使用泛型时,不需要到处使用
instanceof
和casting,因此不会生成对这些指令进行类型检查的字节码指令。另一方面,如果链接到类的旧版本而不重新编译,则在运行时可能会出现一些相当低级的错误


尽管如此,如果你大量使用一个紧密的循环,否则就需要一个强制转换,那么我想泛型可能会使事情加速一点点。但是性能改进并不是使用它们的目的。

是的,但它非常微小

当您使用泛型时,不需要到处使用
instanceof
和casting,因此不会生成对这些指令进行类型检查的字节码指令。另一方面,如果链接到类的旧版本而不重新编译,则在运行时可能会出现一些相当低级的错误


尽管如此,如果你大量使用一个紧密的循环,否则就需要一个强制转换,那么我想泛型可能会使事情加速一点点。但是性能改进并不是使用它们的目的。

在运行时比编译时提前是什么意思?如果不先编译,您将如何运行?好吧,运行时的好处是更少的ClassCastExceptions更少的ClassCast异常id不是真正的运行时好处-如果您的代码是正确的,您就不会得到它们。好处是更容易编写正确的代码。“在运行时比编译时提前”意味着什么?如果不先编译,您将如何运行?好吧,运行时的好处是更少的ClassCastExceptions更少的ClassCast异常id不是真正的运行时好处-如果您的代码是正确的,您就不会得到它们。好处是更容易编写正确的代码。明白了。谢谢你的澄清,明白了。感谢您的澄清。大多数强制转换指令仍然是由编译器生成的,当您编写的程序没有使用泛型时,您也不需要使用instanceof测试。大多数强制转换指令仍然是由编译器生成的,当您编写的程序没有使用泛型时,情况也一样,您也不需要您的instanceof测试。