所以这有效:
int i;
Object a = (Object) i;
int[] t;
Object b = (Object) t;
String[] s;
Object[] t = (Object[]) s;
但这并不:
int[] t;
Object[] z = (Object[]) t;
总而言之,我得到了第一部分(拳击),但我发现第二部分不起作用是非常不直观的。是否有具体原因(除了 String 继承自 Object 和 int 不继承自 Object 之外)?
Edit:
为了完善我的问题,这也有效:
int a = 2;
int b = 3;
int c = 4;
int d = 2;
Object[] o = new Object[] {a,b,c,d};
但以下情况则不然:
int[] t = (int[]) o;
令人惊讶的是,你在 String 上遇到了同样的问题:
String sa = "a";
String sb = "b";
String sc = "c";
String sd = "d";
Object[] so = new Object[] {sa,sb,sc,sd};
String[] st = (String[]) so;
在最后一行产生类转换异常。这仍然有效:
Object[] sy = (Object[])new String[]{sa,sb,sc,sd};
String[] sz = (String[]) sy;