所以这有效:
int i;
Object a = (Object) i;
int[] t;
Object b = (Object) t;
String[] s;
Object[] t = (Object[]) s;
但这不会:
int[] t;
Object[] z = (Object[]) t;
总而言之,我得到了第一部分(拳击),但我发现第二部分不起作用是非常不直观的。是否有特定的原因(除了从 Object 继承的 String 和不从 Object 继承的 int )?
编辑:
为了完善我的问题,这也有效:
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;