Collection.toArray()java.lang.ClassCastException [英] Collection.toArray() java.lang.ClassCastException

查看:61
本文介绍了Collection.toArray()java.lang.ClassCastException的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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(); 但得到异常.

I try cast in this line Class[] classes=(Class[])map.values().toArray(); but get exception.

线程主"中的异常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 [] ).

This gives information on which type of array to convert the Collection to. Otherwise, it returns an array of type Object (and that cannot be cast to an Class[]).

引自

Quoted from the API documentation for Collection.toArray(T[] a):

返回包含此集合中所有元素的数组;返回数组的运行时类型是指定数组的运行时类型....
请注意, toArray(new Object [0])在功能上与 toArray()相同.

这篇关于Collection.toArray()java.lang.ClassCastException的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆