下面转换那里错误了:Object[] s=(Object[]) new Object();
s[0]="b";
s[1]="c";
String[] s1=(String[]) s;
System.out.print(s);提示java.lang.ClassCastException:如果不是数组又可以通过。谢谢

解决方案 »

  1.   

    如果是把Object转换为String数据.Object[] s= new Object[2];
    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]); 以上能实现!当然还有更简单的写法!
      

  2.   

    一个是String数组一个事object数组,当然有问题了。
      

  3.   

    因为String是Object的子类
    所以可以做类似这种的操作Object[] s=(Object[]) new Object();
    s[0]="b"; Object obj = new String("b");
    String a = (String)obj;但是String[]不是Object[]的子类,他们俩之间没有继承与被继承的关系
    所以LZ强转就会出错
      

  4.   

    //如果new String[] 方法一是可以执行的,   
    //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]);   
      

  5.   


    有点不明白String[]不是Object[]的子类
      

  6.   


    ob与str1不同类型,怎么这里不会发生异常的?难道 ob自动转为str1的类型?