1 Object obj = "String";
2 String str = (String) obj; // OK
3
4 Object[] arr = new String[] { "ab", "cd" };
5 String[] arr2 = (String[]) arr; // OK
6
7 Object[] objs = {"One", "two"};
8 String[] strs = (String[]) objs; // java.lang.ClassCastException异常,Why?
对于第8行代码报错的情况不理解,为什么报错。
我现有的认识是,objs的每个元素引用的不是String对象吗,按1、2行的代码来讲,再强制转换回来应该是可以的。
请指教,感恩!!!
2 回答

FFIVE
TA贡献1797条经验 获得超6个赞
//1.Object[]中可以存储任何类型的对象(任意类型不是Object就是其子类), String[]中可以存储String及其子类对象
//2.对1进行概括,对于T[],其中只能存储T及其子类的对象
//3.关于String[]可以赋值给Object[]的可能解释: String[]中所有对象都属于Object及其子类;
// 关于Object[]不能转换为String[]的可能解释: Object[]中的某些对象属于Object或Object的子类, 且不属于String及其子类
//String好像没有子类...emmc
添加回答
举报
0/150
提交
取消