我想澄清这一点,所以我完全理解类型铸造。请纠正任何不正确的事情,因为我现在以非常缓慢的速度自学了大约2个月的Java。在Java中的类型铸造/铸造
比方说,我创建了一个名为SubObject的类。我知道所有没有直接显式超类的类都被假定为Object类的子类。
Object obj1 = new SubObject();
SubObject subObj1 = (SubObject) obj1;
System.out.println(subObj1); //prints out com.examplePackage.SubObject1234e1234;
因此,我已经成功地将基类(Object)的引用降级到其派生类(subObject)。然而...
Object obj2 = new Object();
SubObject subObj2 = (SubObject) obj2;//this throws the ClassCastException error.
我ClassCastException异常错误的理解是,它继承的RuntimeException在编译时抓住它,就表明该代码试图将对象强制转换的子类时它不是一个实例。因为subObj2不是SubObject的实例,而是Object,所以它不兼容。
所以我有两个问题: 1.我的理解中是否有任何缺陷/错误? 2.在哪种情况下实际使用了向下转换?感谢大家的帮助。