2017-02-21 35 views
-3

当我执行下面的代码时,为什么会出现ClassCastException?我得到一个ClassCastException,但我的源类型对象是超类型,并且演员操作符是子类型

class Test extends Test3 { 
    public static void main(String[] args) { 
     Test3 t3 = new Test3(); 
     Test t = (Test) t3; 
     System.out.print("hello"); 
    } 
} 
+2

因为'Test3'不是'Test':'Test'是'Test3'。 “哺乳动物”不是“狗”,而是“狗”是“哺乳动物”。 –

+0

这正是你无法做到的。你不能将对象投射到它不是的东西上。 – SLaks

回答

0

铸造完成这种方式与原始数据类型。但如果你如String尝试这是一个[类]你不能做,没有像int Stringvariable = Integer.parseInt(Stringvariable)方法从字符串转换为整数或String intvariable = String.valueof(intvariable)转换从Integer到String。

parseInt(Stringvariable)是Integer类中的一个方法。 valueof(intvariable)是String类中的一个方法。如果你想建立任何铸造关系,可以通过方法来完成。