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 thattoArray(new Object[0])
is identical in function totoArray()
.
关于java - Collection.toArray() java.lang.ClassCastException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9293474/