对象投射

与原语一样,可以显式和隐式地转换对象。

当源类型扩展或实现目标类型(强制转换为超类或接口)时,会发生隐式转换。

当源类型由目标类型扩展或实现(转换为子类型)时,必须进行显式转换。当正在转换的对象不是目标类型(或目标的子类型)时,这会产生运行时异常(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)