有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java集合。toArray()方法,详细信息

为什么它不起作用

List<String> lista = new ArrayList<>();
        lista.add("Lol");
        lista.add("ball");
        String [] array = (String[])lista.toArray();

它抛出一个RunTimeException (ClassCastException),我知道还有另一个方法用于返回列表中包含的对象,但是幕后发生了什么?我的意思是,我正在将一个对象数组转换为一个字符串数组。所以它应该编译,但它没有。 提前谢谢


共 (6) 个答案

  1. # 1 楼答案

    有两个toArray()版本。你可以用另一个

  2. # 2 楼答案

    改为使用toArray(T[]a)

    List<String> lista = new ArrayList<String>();
        lista.add("Lol");
        lista.add("ball");
        String [] array = lista.toArray(new string[1]);
    

    这确保toArray返回String[]类型的数组

    正如其他人所指出的,toArray()返回Object[]类型的数组,并且从Object[]到String[]的强制转换是非法的

  3. # 3 楼答案

    对象数组不是字符串数组,不能将强制转换为一个

    勾选this

  4. # 4 楼答案

    List lista=新阵列列表<&燃气轮机;(); ---&燃气轮机;List lista=new ArrayList()

  5. # 5 楼答案

    List.toArray() 返回一个Object[],因为type erasure。在运行时,列表不知道是否有字符串对象。从那里你可以看到错误的来源

    不能将Object[]类型强制转换为String[]

  6. # 6 楼答案

    该版本的toArray()返回Object[]。即使对象数组中的所有对象都是字符串,也不能将其强制转换为字符串数组

    您可以使用lista.toArray(new String[lista.size()]);版本正确获取实际类型