因此,这是有效的:
int i;
Object a = (Object) i;
int[] t;
Object b = (Object) t;
String[] s;
Object[] t = (Object[]) s;
但这个不行:
int[] t;
Object[] z = (Object[]) t;
总的来说,我理解了第一部分(boxing),但是我觉得第二部分完全没有效果非常不直观。除了String继承自Object而int不继承自Object之外,还有其他特殊原因吗?
编辑:为了进一步明确我的问题,以下也有效:
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 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;
int
不继承自任何类。 - user647772