对象类型转换的性能

时间:2012-01-10 12:47:13

标签: java performance casting

对象类型转换在性能方面有多昂贵?
我应该尽可能避免使用Typecasting吗?

5 个答案:

答案 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)

不,它不应该对性能造成太大影响。