在java中我们什么时候得到不兼容的类型编译错误,什么时候得到ClassCastException?
答案 0 :(得分:1)
ClassCastException API规范明确指出:
抛出以指示代码已尝试将对象强制转换为 它不是实例的子类。
ClassCastException在运行时发生,因为编译器认为强制转换可能是有效的。
例如:
// The below line will compile but ClassCastException will be raised at runtime
Integer i = (Integer) new Object();
编译器在编译时可以很容易地解决不兼容的类型错误。它只是查看您尝试转换特定对象的类是否属于同一层次结构。
例如:
String str = "abc"; <br>Integer number = (Integer) str;
// Compile Error : Integer and String are not in the same hierarchy