ClassCastException的真实世界示例

时间:2015-07-08 14:49:26

标签: java classcastexception

我在接受采访时被要求提供一个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。 然后面试让我给出了真实世界的例子,我说船和桌子都是用木头做的

表扩展木材 船延伸木材 但你不能用桌子来钓鱼,你不能用桌子先生或站着

我想知道我的例子是否正确?

2 个答案:

答案 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