Object []  o   = { new Integer(1), new Integer(2)};
Integer [] i=(Integer []) o;
System.out.println(i[0]);
报错如下:Exception in thread "main" java.lang.ClassCastException: [Ljava.lang.Object;
at test.test.TestCast.main(即第二行转型出错。)应该如何解决?希望能够通过5.0的泛型解决。
如List<Integer> lP= new ArrayList<Integer>();
然后我就可以直接使用Integer了。
而数组如何进行泛型,请指教。请不要回答:通过循环o里的对象,逐个进行转型。谢谢!

解决方案 »

  1.   

    直接:
    Integer[]  o   = { new Integer(1), new Integer(2)};
      

  2.   

    Object [] o = new integer[]{ new Integer(1), new Integer(2)};
    Integer [] i=(Integer []) o;
      

  3.   

    to  Mailbomb(网络咖啡http://blog.csdn.net/mailbomb):
    你那样做我当然知道,我就是希望实现转型,具体为什么就没必要说了。只是希望能实现数组转型。
      

  4.   

    to IceCraft(心淡情浓) ( ) 信誉:105 :
    谢谢,你这样做可以!是个解决办法。能想想帮忙如何通过5.0泛型来实现嘛?谢谢喽!我试了。就连编译都不通过!
      

  5.   

    Object []  o   = { new Integer(1), new Integer(2)};另外:我能得到的就是一个Object数组,只能是先得到一个Object数组,而必须事后对o进行处理。应该如何弄呢?二楼的。而不是能够象你那样处理o,因为统一包装好返回的就是一个object数组,然后我需要重新包装进行处理!
      

  6.   

    一个Object[]无法转换Integer[]
    当然如果这个Object[]的运行时类型是Integer[],当然可以转回来。数组中的元素类型不能决定数组本身的类型(只要兼容就可以)
    Object [] o = new integer[]{ new Integer(1), new Integer(2)}; 是可行的。
      

  7.   

    如果实际是Object[]类型,但是你能确定里面的元素都是Integer,可以通过初始化一个新的数组实现。
    Integer[] dest =new Integer[src.length];
    System.arraycopy(src,0,dest,0,src.length);当然也可以通过List来做这个转换
    Integer[] dest=(Integer[])new ArrayList(Arrays.asList(src)).toArray(new Integer[src.length]);