Object[] obj = null ;
String[][] result = null ;
obj=getObj();//返回的是一个对象数组
result = ( String[][] ) obj[ 1 ] ;//异常:java.lang.ClassCastExceptiongetObj()方法由第三方公司提供,并且是正确且可以运行的,
我只是简单地调用(调用方法跟第三方公司提供的一样)

解决方案 »

  1.   

    比如getObj() 得到“A,B;C,D”,想赋值给一个二维数组string[0][0]=A,string[0][1]=B ,所以是obj[1] ?????一维转二维?好象不太明白LZ的意思
      

  2.   

    调用obj[0].class.getName()看看obj数组中存的对象的类型究竟是什么,是不是String[][]
      

  3.   

    public static String valueOf(Object obj) { 
    return (obj == null) ? "null" : obj.toString(); 
    } Object有个toString啊,
      

  4.   

    你用instanceof 判断一下Object是什么类型
      

  5.   

    照代码分析的话应该没有错,我觉得第三方返回的Object数组可能不能被转型为String[][]的
      

  6.   

    都不知道你要干什么?
    result = ( String[][] ) obj[ 1 ] ;
    String[][] 不是一种类型,不能拿来转换的!
      

  7.   

    Object[] obj = null ;
    String[][] result = null ;
    obj=getObj();//返回的是一个对象数组
    result = ( String[][] ) obj[ 1 ] ;//异常:java.lang.ClassCastException-------------
    首先,明确一下getObj()返回的是几维数组,如果是二维,下面写法是对的.
    Object[] obj = null ;
    String[][] result = null ;
    obj=(Object[])getObj();
    result = ( String[][] ) obj ; // 更改此处
    System.out.println(result[ 1 ][1]);其次,如果是一维数组中存放二维数据,那么下面是正确的,也就是你的代码是正确的.public class T
    {
    public static void main(String[] args)
    {
    Object[] obj = null ;
    String[][] result = null ;
    obj=(Object[])getObj();
    result = ( String[][] ) obj[1] ;
    System.out.println(result[ 1 ][1]);
    }

    public static Object getObj()
    {
    String[][] ret2 = new String[][]{{"aa","aa"},{"bbb","bb"},{"cc","ccc"}};
    String[][] ret1 = new String[][]{{"aa","aa"},{"bbb","bb"},{"cc","ccc"}};

    Object[] ret = new Object[] {ret1,ret2};

    return ret;
    }
    }你再查看你的代码是否是这两种情况.
      

  8.   

    请先 确定  obj[1] 是不是 String[][] 类型的。用 instanceof 。
    如果是,则转换没有问题,如果不是,那么会抛出异常。
      

  9.   

    result = ( String[][] ) obj[ 1 ] ;//异常:java.lang.ClassCastException该语句将 obj 的第二个元素转换成一个二维数组,楼主的 obj 的第二个元素是一个二维的 String 类型数据吗?