2011-09-02 93 views
0

我使用遗留库并需要使用将对象转换为集合。 为了避免异常,我想使用instanceof。 所以问题二: 1.如果我使用instanceof - 需要使用try .. catch抛出异常以避免异常? 2.它是否达到性能? 谢谢。使用instanceof帮助和java cast类型异常是否会影响性能?

+0

instanceof和cast的性能非常好。我发布了一些Java7中的时间围绕这个问题的不同方法:http://stackoverflow.com/questions/16320014/java-optimization-nitpick-is-it-faster-to-cast-something-and-let-it-it-投掷excep/28858680#28858680 – Wheezil

回答

5
  1. 如果使用instanceOf那么你不需要try-catch(ClasscastException e)。即使有null s,instanceOf也能保证正常工作。

  2. 在当今的虚拟机中,铸造不会显示出任何可衡量的性能影响。相反,如果您发现过于频繁投掷,那么请重新访问您的设计。

注意:instanceof由于类型擦除而不适用于泛型。

1

Instanceof对现代JVM中的性能没有影响,任何影响都可以忽略不计。

这里的an article on this subject与一些数字!

1

有时,在运行时知道对象的类型是很有用的,特别是在投射时。在Java中,无效转换会导致运行时错误。编译时会捕捉到许多无效的转换。但是,涉及类层次结构的强制转换可能会产生只能在运行时才能检测到的无效强制转换。 Java提供运行时操作员instanceof来回答这个问题。它没有任何例外。 现代JVM/JIC编译器已删除的大部分性能损失传统的“慢”业务,其中包括的instanceof,异常处理,反射等

请参阅this stackoverflow link

因此去的instanceof没有任何担心,但是你不能在收藏中使用它们,他们不在那里工作。 java generics and instanceof

相关问题