Java 初学者 : does casting result in lower performance by any mean?

标签 java inheritance casting

当我创建 Animal x=new Dog(); 并且我想使用 Dog 函数时,我必须强制转换吗? ((Dog)x).bark(); 所以假设我会在 for 循环中多次使用它会导致性能降低吗?除了每次都转换之外还有其他方法吗?

最佳答案

像一个 Actor

Dog dog = (Dog) animal;

是所谓的“Check”类型转换。所以在运行时它是一个简单的 if 语句(是动物实现 Dog 的实例),它抛出一个 ClassCastException。因此,如果转换正常,至少它不会提供任何合理的性能开销,但如果转换失败,则会抛出异常,并且异常处理是一种消耗性能的“操作”。

因此,如果您转换某些东西,并且转换不会失败,我相信不存在性能问题。但是,如果您的转换经常失败,那么您应该稍微更改一下算法。

关于Java 初学者 : does casting result in lower performance by any mean?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4545870/

相关文章:

java - Java 中的类型转换是如何工作的?

java - Android属性动画: how to increase view height?

java - Hibernate 和 java 8 lambda 的

java - 创建在java中存储从-6到38的赔率的数组

c# - Specflow测试步骤继承导致 "Ambiguous step definitions"

java - 为什么在这个例子中没有调用子类方法,因为它在 Java 的动态多态中被调用?

java - 在 android 中从 news.bitcoin.com 获取 RSS feed 时出现文件未找到异常

ruby-on-rails - Rails 3 管理部分关于继承和命名空间的设计问题

c# - 将 Int32 转换为 CultureInfo PowerShell 与 C#

c# - 将枚举转换为整数