对象类型转换的性能

Object Typecasting在性能方面有多昂贵?
我应该尽可能避免使用Typecasting吗?

它足够便宜,属于过早优化的范畴。 除非您已经分析了应用程序并确定它是一个问题,否则不要浪费时间思考或询问有关它的问题,最重要的是:不要妥协您的设计以避免它。

JavaWorld:铸造成本

Casting用于在类型之间进行转换 – 特别是在引用类型之间,对于我们感兴趣的转换操作类型。

上传操作(在Java语言规范中也称为扩展转换)将子类引用转换为祖先类引用。 这种转换操作通常是自动的,因为它总是安全的并且可以由编译器直接实现。

向下转换操作(在Java语言规范中也称为缩小转换)将祖先类引用转换为子类引用。 此转换操作会产生执行开销,因为Java要求在运行时检查转换以确保它是有效的。 如果引用的对象不是转换的目标类型或该类型的子类的实例,则不允许尝试转换,并且必须抛出java.lang.ClassCastException。

取决于你的类型转换的意思。 有“向上倾斜”,你不需要花费任何费用,而且还有很多需要付出代价的“向下倾销”。 第二个问题的答案也从“它取决于”开始。 通常我会避免在我的代码中进行向下转换,因为从我的经验来看,如果它在代码中被过度使用,则意味着设计很糟糕。 另一方面,这并不一定意味着它根本不应该被使用。

类型转换会产生成本,因为必须检查运行时类型信息以确保转换可以正常工作。 与其他一切相比,我怀疑这将是重要的,但你可以尝试测量它。

更一般地说,类型转换(恕我直言)是设计中某些东西不对的标志。 当然,有时你无法避免它(例如,使用遗留集合),但我肯定会看到我是否可以删除它。

不,它不应该显着影响性能。