首页新闻找找看学习计划

Java 中 Object[] 转 String[],转换失败,报java.lang.ClassCastException异常

0
悬赏园豆:10 [已解决问题] 解决于 2017-07-19 11:14
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行的代码来讲,再强制转换回来应该是可以的。

请指教,感恩!!!

XMiles的主页 XMiles | 初学一级 | 园豆:193
提问于:2017-07-18 07:06
< >
分享
最佳答案
0

Java的Object数组不能转换成为String[]数组,要转换的数组它本身是Object类型的数组,但要把它转换为String类的数组,这当然是错误的。上边两个调用的构造函数都是String的构造函数,所以本身就是String类型的。当然没有错了。看看我的代码和运行结果。

收获园豆:10
鸿燕藏锋 | 小虾三级 |园豆:568 | 2017-07-18 08:25
其他回答(1)
0

//1.Object[]中可以存储任何类型的对象(任意类型不是Object就是其子类), String[]中可以存储String及其子类对象
//2.对1进行概括,对于T[],其中只能存储T及其子类的对象
//3.关于String[]可以赋值给Object[]的可能解释: String[]中所有对象都属于Object及其子类;
// 关于Object[]不能转换为String[]的可能解释: Object[]中的某些对象属于Object或Object的子类, 且不属于String及其子类
//String好像没有子类...emmc

火红的枫叶 | 园豆:202 (菜鸟二级) | 2018-01-29 18:02
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册