java - Collection.toArray() java.lang.ClassCastException

标签 java collections

import java.util.HashMap;
import java.util.Map;


public class Main
{
    public static void main(String[] args)
    {
        Map<Integer,Class> map=new HashMap<Integer,Class>();
        map.put(0,Main.class);
        Class[] classes=(Class[])map.values().toArray();
        for (Class c:classes)
            System.out.println(c.getName());
    }

}

我尝试在这一行 Class[] classes=(Class[])map.values().toArray(); 进行转换,但得到异常。

线程“main”中的异常 java.lang.ClassCastException: [Ljava.lang.Object;不能转换为 [Ljava.lang.Class; 在 Main.main(Main.java:11)

什么问题?

最佳答案

变化:

Class[] classes = (Class[]) map.values().toArray();

收件人:

Class[] classes = map.values().toArray(new Class[0]);

这提供了关于将 Collection 转换为哪种类型的数组的信息。否则,它返回一个 Object 类型的数组(并且不能转换为 Class[])。


引自 the API documentation for Collection.toArray(T[] a) :

Returns an array containing all of the elements in this collection; the runtime type of the returned array is that of the specified array. ...
Note that toArray(new Object[0]) is identical in function to toArray().

关于java - Collection.toArray() java.lang.ClassCastException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9293474/

相关文章:

java - 禁用 mongodb 健康指示器 Micronaut

java - 从嵌套 HashMap 中收集

java - 对对象列表中的数据进行分组和求和,同时保留插入顺序

java - 使用泛型绑定(bind)不匹配错误

java - 用于比较数据集的任何 Java 集合

java - 如何迭代(并更改)作为另一个集合的值的集合

java - 优化 Hibernate session.createQuery().list();

java - iPhone定位方法

java - 如何让spring为JdbcMetadataStore创建相应的schema?

ruby-on-rails - Ruby on Rails - 部分使用集合循环时出现问题