我在接受采访时被要求提供一个ClassCastException的例子,我给出了以下示例
class X{}
class Y extends X{}
class Z extends X{}
Y y=new Y();
Z z=new z();
(X)y
是可能的
(X)z
是可能的
Z(y)
和(Y)z
将抛出ClassCastException。
然后面试让我给出了真实世界的例子,我说船和桌子都是用木头做的
我想知道我的例子是否正确?
答案 0 :(得分:1)
我不会接受这个作为答案,因为船/桌子不是木材的子类型 木材的一种亚型是橡木或樱桃木。
答案 1 :(得分:1)
z = (Z)y
不会抛出ClassCastException
- 它永远不会编译。
以下将在第二行编译并抛出ClassCastException(java.lang.ClassCastException: [LXXX$Y; cannot be cast to [LXXX$Z;
)
X[] xx = new Y[1];
Z[] zz = (Z[]) xx;
本着同样的精神
Object obj = new Integer(0);
String str = (String) obj; // class cast exception here