美文网首页
01. ClassCastException (String L

01. ClassCastException (String L

作者: 科学 | 来源:发表于2016-05-04 10:47 被阅读0次

http://stackoverflow.com/questions/5690351/java-stringlist-toarray-gives-classcastexception

编译并不会报错,但是运行时会检查类型,这个时候在数组做强制转换的时候出现问题

The class cast exception happened just because toArray() returns Object[]. Surely Object[] cannot cast to String[].
JDK8 API: List toArray

import java.util.HashSet;
import java.util.Set;

public class ToArrayGivesClassCastException {
    public static void main(String[] args) {
        // java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [Ljava.lang.String;
        Set<String> recipientSet1 = new HashSet<>();
        recipientSet1.add("wdxxlanswer@gmail.com");
        String[] recipients1 = (String[]) recipientSet1.toArray(); // 问题出在这里
        System.out.println(recipients1.length);

        // Solution 解决方案
        Set<String> recipientSet2 = new HashSet<>();
        recipientSet2.add("wdxxlanswer@gmail.com");
        String[] recipients2 = recipientSet2.toArray(new String[recipientSet2.size()]);
        System.out.println(recipients2.length);
    }
}

相关文章

网友评论

      本文标题:01. ClassCastException (String L

      本文链接:https://www.haomeiwen.com/subject/kscxrttx.html