instanceof operator java的复杂性

Cha*_*ani 6 java performance complexity-theory

我想知道在java中使用instanceof运算符的计算成本是多么昂贵,并想知道是否有更好的替代方案可用

jeh*_*eha 9

另一种方法是避免instanceof正确使用和设计你的类(在OO意义上).

由于instanceof运算符具有相应的" instanceof "字节代码指令,因此可能不会有更高效的方法; 但这也可能取决于实际JVM的优化方式.

  • 这更像是评论而不是答案.问题基本上是,"为了做X(其中X是未说明的)我必须做Y; Y有多快,有没有其他选择?" 你建议不要做X,这不符合OP的观点. (6认同)
  • @MichaelMcGowan做任何事情的最快方法都不是去做,所以应该总是探索替代方案.这是零假设技术. (2认同)

Tom*_*ine 7

instanceof非常快.然而,这通常是一个经过深思熟虑的设计的症状.

它与(成功)演员表演的表现大致相同,因为它做了很多相同的事情.实际上,该任务大致相当于"虚拟"方法调用.

在理智的实现上:对于类,只需要获取运行时类并查看固定的偏移量来检查超类(只要你没有超过8个类的HotSpot继承链).接口有点棘手,但通常最后两个用例适用于缓存的任何特定运行时类.所以这也很快.