有一个方法得到Integer类型的集合list现要转为 String[],String[] ids = (String[]) list.toArray(new String[0]);报类型转换错误,toArray能实现类型转换吗
还是只能用笨方法for 赋值给 数组

解决方案 »

  1.   

    toArray是把list转为 Object[] 当然可以了 你把报错贴出来看看
      

  2.   

    List<Integer> list = new ArrayList<Integer>();
    list.add(1); list.add(2); list.add(3); list.add(4);
    String temp = Arrays.toString(list.toArray());
    String tempStr = temp.substring(1, temp.length() - 1);
    String []buf = tempStr.split(",[ ]");
    for(String tem : buf) {
    System.out.print(tem);
    }
    结果(最终存放在buf数组里面):
    1234  -------------------------------------------
     list.toArray(new String[0])
    要求list中的类型必须与转化的类型一致。也就是说。你List里面存放的Integer,那么你只能转化为Integer.
    我刚刚在网上看了一下。只能使用笨方法,也就是循环转化为string。我给你写了一个。利用现有的类库以及正则表达式。给转了一下。
      

  3.   

    这样转换肯定会出粗,建议用toString()方法
      

  4.   

    toArray是把list转为 Object[] 然后使用for循环强制转换每一个元素成string
      

  5.   

    list 里的元素是Integer,不能转换成 String 数组,这很合多态的原理,因为Integer和String之间没有继承关系就象一个笼子里(ArrayList)关着一群猪(Integer),你希望他们放出来的时候变成一群牛(String),这可能吗?
      

  6.   

    toArray 的参数是 Object[] 而 Integer String  都是Object
    故我有此一问
      

  7.   

    String[] ids = (String[]) list.toArray(new String[0]);
    要求转换后的数组类型应为list中更元素的超类。
    String类型显然不是Integer的超类,所以不能直接转。