当前位置: 首页 > 面试题库 >

instanceof运算符会产生很多开销吗?为什么?

仉姚石
2023-03-14
问题内容

在我的项目中,我的一个同事非常反对使用instanceof运算符,因为它“会产生大量开销”,这是什么原因呢?是真的吗

还有另一种方法可以检查对象的类型而不使用它?

因为我发现它在某些情况下非常有用。


问题答案:

确实产生一些开销,再加上后续的转换。使用最新版本的Java,开销已减少。但是无论如何,这都是微优化-也就是说,在一般情况下,您不必为此担心。

真正的反对意见instanceof是,在许多情况下,有更好的OOP方法可以实现所需的行为。



 类似资料:
  • 为什么运算符只应该是4个字节却生成12个字节?当我引用变量时,这只是引用数组第一个索引的内存地址。实际上,我打印了第一个索引的内存地址,并将其与进行了比较,它们产生了相同的内存地址结果,这证实了它们都引用了数组的第一个索引,但是“array”产生了12个字节,而产生了4个字节。

  • 问题内容: 是否有可以与运算符一起使用的有效的类Type变量?例如: 作为替代方案: 会有性能上的好处吗? 问题答案: 你在做什么实际上是不一样的。考虑一下子类会发生什么(我知道您不能子类,所以在这种情况下不要紧)。 如果您有一个对象,并且想知道它是否是某种类型的实例,并且您有该对象,则可以使用该方法。 无论哪种情况,我都希望性能差异不大。

  • 问题内容: 整个泛型问题有点让我陷入困境,RTT更是如此。 规范?嗯,这是要点: 然后我会这样称呼它: 这样一来,我便可以在实际的帮助程序中灵活地分配查询返回类型。它进行一些转换和对象创建。我看到的是没有匹配项,我应该以其他方式这样做吗?还是整个想法不好? 真正的核心是我不了解class.isInstance和instanceOf运算符之间的区别?我应该使用后者吗? 问题答案: 这样一来,我便可以

  • 问题内容: 运算符是做什么用的?我看过类似的东西 但是,这对我来说都没有意义。我已经完成了研究,但只提出了没有任何解释的示例。 问题答案: 是用于测试对象(实例)是否为给定Type的子类型的二进制运算符。 想像: 然而,随着;, 因为是的超类型,可能较少。 和, 这是因为Dog既不是的子类型也不是的父类型Cat,并且它也不实现它。 请注意,上面用于的变量是类型。这是一个运行时操作,将我们带到一个用

  • 我有一个图像压缩应用程序,现在有两个不同版本的内存分配系统。在最初的一个例子中,malloc无处不在,在第二个例子中,我实现了一个简单的池分配器,它只分配大块内存,并将部分内存返回给myalloc()调用。 我们注意到,使用malloc时会产生巨大的内存开销:在内存使用量最大的时候,malloc()代码对于1920x1080x16bpp映像需要大约170 MB的内存,而池分配器只分配48 MB,其

  • 在测试CRC实现时,我注意到0x01的CRC通常(?)似乎是多项式本身。然而,当试图手动进行二进制长除法时,我总是以丢失多项式的前导“1”告终,例如,当消息为“0x01”和多项式“0x1021”时,我将得到 通过查看https://en.wikipedia.org/wiki/computation_of_cyclic_redundancy_checks,我可以看到使用生成多项式离开移位寄存器的高位