字符串数组中抛出的类转换异常[重复]

Posted

技术标签:

【中文标题】字符串数组中抛出的类转换异常[重复]【英文标题】:class cast exception thrown in string array [duplicate] 【发布时间】:2015-06-21 07:29:59 【问题描述】:

我只是将两个字符串数组附加到一个数组列表中,然后将其转换为字符串数组以将返回变量传递为string[]

public static void main(String[] args) 

    String [] a = "america", "bakrain", "canada";
    String [] b = "denmark", "europe" ;
    try
        List<String> listString = new ArrayList<String>(Arrays.asList(a));
        listString.addAll(Arrays.asList(b));
        String [] outResult= (String[])listString.toArray();
        System.out.println(outResult);

     catch (Exception e) 
        e.printStackTrace();
        


错误来了

java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [Ljava.lang.String;
at myFirst.myClass.main(myClass.java:26)

如何解决这个问题?

【问题讨论】:

String [] outResult= new String[listString.size()]; listString.toArray(outResult); 【参考方案1】:

listString.toArray(); 将返回 Object[],而不是 String[]

【讨论】:

【参考方案2】:

您需要单独转换数组中的每个成员,因为结果是 Object[] 而不是 String[]

或者干脆做

String [] outResult= listString.toArray(new String[listString.size()]);

【讨论】:

【参考方案3】:

使用

String[] outResult = (String[]) listString.toArray(new String[0]);

【讨论】:

【参考方案4】:

尝试以下解决方案:

public static void main(String[] args) 
    // TODO Auto-generated method stub          

    String [] a = "america", "bakrain", "canada";
    String [] b = "denmark", "europe" ;
    try
        List<String> listString = new ArrayList<String>(Arrays.asList(a));
        listString.addAll(Arrays.asList(b));

        System.out.println(listString);
        String [] outResult= new String[listString.size()];

        int i=0;
        for(String str: listString)
            outResult[i]=str;
            i++;
        


     catch (Exception e) 
        e.printStackTrace();
        



【讨论】:

以上是关于字符串数组中抛出的类转换异常[重复]的主要内容,如果未能解决你的问题,请参考以下文章

如果在“等待”之后抛出,则从任务中抛出的异常被吞下

捕获 AuthenticationProvider 中抛出的异常

捕获在不同线程中抛出的异常

如何捕获 node_modules 中抛出的异常

如何捕获ctypes中抛出的异常?

是否可以捕获 JavaScript 异步回调中抛出的异常?