对象投射
与原语一样,可以显式和隐式地转换对象。
当源类型扩展或实现目标类型(强制转换为超类或接口)时,会发生隐式转换。
当源类型由目标类型扩展或实现(转换为子类型)时,必须进行显式转换。当正在转换的对象不是目标类型(或目标的子类型)时,这会产生运行时异常(ClassCastException
)。
Float floatVar = new Float(42.0f);
Number n = floatVar; //Implicit (Float implements Number)
Float floatVar2 = (Float) n; //Explicit
Double doubleVar = (Double) n; //Throws exception (the object is not Double)