对象类型转换的性能

Aci*_*dic 6 java performance casting

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

Mic*_*rdt 10

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


Jag*_*ger 5

取决于您所说的类型转换。有“投降”不花钱,有“降投”又花钱。第二个答案也从“取决于”开始。通常,我避免在代码中进行向下转换,因为从我的经验来看,如果代码中过度使用它,则意味着设计很糟糕。另一方面,这不一定意味着完全不应该使用它。

  • +1:虽然可能会在性能上付出一些代价,但良好的设计是避免使用它的更重要原因。;) (3认同)

Lio*_*ion 5

JavaWorld:铸造成本

铸造特别是引用类型之间,在其中我们在这里感兴趣铸造操作的类型-是用来转换类型之间。

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

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