对象类型转换在性能方面有多昂贵?
我应该尽可能避免使用Typecasting吗?
答案 0 :(得分:9)
它足够便宜,属于过早优化的范畴。除非你已经描述了你的应用并确定它是一个问题,否则不要浪费时间思考或询问它,最重要的是:不要妥协你的设计以避免它。
答案 1 :(得分:5)
取决于您对类型转换的含义。有“向上倾斜”,你不需要花费任何费用,而且还有很多需要付出代价的“向下看”。第二个答案也从“它取决于”开始。通常我会避免在我的代码中进行向下转换,因为从我的经验来看,如果它在代码中被过度使用,则意味着设计很糟糕。另一方面,这并不一定意味着它根本不应该被使用。
答案 2 :(得分:5)
JavaWorld: The cost of casting
Casting 用于转换 类型 - 在引用类型之间 特别是对于铸造类型 我们感兴趣的操作 这里。
Upcast 操作(也称为 扩展Java中的转换 语言规范)转换a 子类引用祖先 课堂参考。这个铸造 操作通常是自动的,因为 它总是安全的,可以 由编译器直接实现。
Downcast 操作(也称为 缩小Java中的转换 语言规范)转换 祖先类引用子类 参考。这种铸造操作 从Java开始创建执行开销 要求检查演员表 运行时以确保它是有效的。 如果引用的对象不是 目标类型的实例 演员或该类型的子类, 不允许尝试演员表演 并且必须抛出一个 java.lang.ClassCastException。
答案 3 :(得分:2)
类型转换将产生成本,因为必须检查运行时类型信息以确保转换可以正常工作。与其他一切相比,我怀疑这将是重要的,但你可以尝试衡量它。
更一般地说,类型转换(恕我直言)是设计中某些东西不对的标志。当然,有时你无法避免它(例如使用旧版集合),但我肯定会看到我是否可以删除它。
答案 4 :(得分:0)
不,它不应该对性能造成太大影响。