我想把List转换成一个String数组.
看接口 List下有这个方法:可以指定数组的运行时类型
toArray
<T> T[] toArray(T[] a)
List<String> al = new ArrayList<String>();
al.add("a1");
al.add("a2");
String[] str = (String[])al.toArray();
for(String s : str) {
System.out.println(s);
}
结果:ClassCastException异常
请教前辈,这个方法怎么用呢?我不想用List下的"Object[] toArray()"方法呢...

解决方案 »

  1.   

    ArrayList<String> a=new ArrayList<String>();
    a.add("a");
    a.add("b");
    String[] b=new String[a.size()];
    a.toArray(b);
    System.out.println(b[0]);
      

  2.   

    Object[] -> String[]
    不能直接强制转换
      

  3.   

          List<String> al = new ArrayList<String>();
             al.add("a1");
             al.add("a2");
             String[] str = (String[]) al.toArray(new String[al.size()]);
             for(String s : str) {
                 System.out.println(s);
             }
      

  4.   


    import java.util.*;public class Arr{
    public static void main(String args[]){
    ArrayList<String> list = new ArrayList<String>();
    list.add("aaa");
    list.add("bbb");
    list.add("ccc"); System.out.println(Arrays.toString(list.toArray(new String[]{})));
    }
    }
      

  5.   


    String str[] = list.toArray(new String[]{});
      

  6.   

    晚了
            
            List<String> al = new ArrayList<String>();
            al.add("a1");
            al.add("a2");
            
            String[] toBeStored = new String[al.size()];
            al.toArray(toBeStored);
            
            for (String s : toBeStored) {
                System.out.println(s);
            }

             
            List<String> al = new ArrayList<String>();
            al.add("a1");
            al.add("a2");
            
            String[] toBeStored = new String[]{};
            String[] str = al.toArray(toBeStored);
            
            for (String s : str) {
                System.out.println(s);
            }
      

  7.   

    请教前辈,为什么要先给String数组分配空间呢?
    Object[] obj = al.toArray();
    for(Object o : obj) {
    System.out.println(o);
    }
    这个Object数组,不先分配空间也没事呢?
    帖子20分太少了,先谢谢大家了!!
      

  8.   

    String str[] = list.toArray(new String[]{});
    这个也没先分配空间吧,看看api doc吧至于那个Object[],返回的是引用,没必要分配,分配了也没用