【发布时间】:2014-04-12 11:19:09
【问题描述】:
假设我有一个接口Vehicle 和实现Car。 Car 类有一个名为getNumberCylinders() 的方法,它不是Vehicle 接口的一部分。因此,在我的代码中,我需要将Vehicle 实例转换为Car 类才能调用此方法。
与将此方法包含在接口中并在不进行强制转换的情况下直接调用该方法的替代方案相比,这种转换是否会产生性能开销?
【问题讨论】:
-
强制转换在运行时不做任何事情。
-
@DavidWallace 所以投射会有 0 纳秒的性能损失?
-
如果
Vehicle是一个接口,那么就没有“Vehicle实例”这样的东西。有一个实现Vehicle的类的实例。 -
@DavidWallace 所以JVM规范#2.6.8要求的运行时检查没有发生? checkcast 操作码不存在?
标签: java performance interface casting