【发布时间】:2018-12-19 10:21:20
【问题描述】:
JLS 声明
从 S 类型到 T 类型的特定转换允许在编译时将 S 类型的表达式视为具有 T 类型。 在某些情况下,这将需要在运行时执行相应的操作来检查转换的有效性或将表达式的运行时值转换为适合新类型 T 的形式。
The list of JVM instructions 包含
checkcast
操作
检查对象是否属于给定类型
Object o = new String();
String s =
(String)//what does the JVM do?
o;
由于描述指出 checkcast 在失败时抛出 ClassCastException 并检查 objectref 是否可以强制转换为给定类型,我猜这可能是执行的指令如果我在我的代码中向下转换,则在运行时。
首先{1}:这个假设正确吗?
如果是这样:
Object o = (Object)//What do I do now?
new String();
{2}这也是隐式或显式向上转换的情况吗?
{3}这条指令在其他微优化的规模上会产生多少运行时损失?
与例如将包含对象引用的字段移动到局部函数变量以加快访问时间或其他类型的微优化相比,checkcast 需要多少性能?
【问题讨论】:
标签: java casting type-conversion