下面转换那里错误了:Object[] s=(Object[]) new Object();
s[0]="b";
s[1]="c";
String[] s1=(String[]) s;
System.out.print(s);提示java.lang.ClassCastException:如果不是数组又可以通过。谢谢
s[0]="b";
s[1]="c";
String[] s1=(String[]) s;
System.out.print(s);提示java.lang.ClassCastException:如果不是数组又可以通过。谢谢
解决方案 »
- String 类的.class怎么产生实例话一个对象?
- 如何用一个线程动态刷新awt textarea的内容?
- 多线程——signalall()的问题
- 问一个查询问题,困扰我很久了。大哥大姐帮帮忙。
- 高分求解关于用JMAIL接收邮件的附件问题
- 请教,没见过的语法????????
- 遗传算法,或着是优化算法
- 在下写的一个绚丽多彩的3D花篮,现在公布源代码,希望和大家共同切磋交流:)
- Google提供的WebService的API怎么不能进行中文的查询搜索啊?
- 奇怪rs.getXXX
- 关于JAVA的自定义方法的一些问题
- Exception in thread "main" java.lang.NullPointerException at A.main(A.java:8)
s[0]="b";
s[1]="c";
String[] s1 = new String[s.length];
int i = 0;
for(Object o: s){
s1[i++] = String.valueOf(o);
}
//String[] s1=(String[]) s;
System.out.print(s1[0]); 以上能实现!当然还有更简单的写法!
所以可以做类似这种的操作Object[] s=(Object[]) new Object();
s[0]="b"; Object obj = new String("b");
String a = (String)obj;但是String[]不是Object[]的子类,他们俩之间没有继承与被继承的关系
所以LZ强转就会出错
//new Object[]是错误的 方法一
Object [] ob = new Object[]{"abc","efg"};
//方法一
String [] str = (String[])ob;
for (int i = 0; i < str.length; i++) {
System.out.println(str[i]);
}
//方法二
int length = ob.length;
String [] str1 = new String[length];
System.arraycopy(ob, 0, str1, 0, length);
for (int i = 0; i < str1.length; i++) {
System.out.println(str1[i]);
}
有点不明白String[]不是Object[]的子类
ob与str1不同类型,怎么这里不会发生异常的?难道 ob自动转为str1的类型?