繁体   English   中英

更快的是:instanceof或isInstance?

[英]What's faster: instanceof or isInstance?

除了设计问题,现代JVM的执行速度更快?

foo instanceof Bar

要么

Bar.class.isInstance(foo)

为什么?

Class.isInstance是JVM固有的。 它被编译到完全一样的instanceof做同样的序列(从热点源代码的证明: 12 )。 也就是说,它们在性能方面是平等的。

foo instanceof Bar应该更快。

如果在编译时不清楚拥有哪个类,则可以使用Bar.class.isInstance(foo)

考虑以下:

void test(Object o1, Object o2) {
   o1.getClass().isInstance(o2);
}

在此示例中,JVM在运行时确定哪个类调用该方法。 使用instanceof不可能。

因此,如果您在编译时知道该类,则应使用instanceof

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM