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();
但会出现异常。
Exception in thread "main" java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [Ljava.lang.Class; at Main.main(Main.java:11)
怎么了
更改:
Class[] classes = (Class[]) map.values().toArray();
至:
Class[] classes = map.values().toArray(new Class[0]);
这给出了将其转换为哪种类型的数组的信息Collection
。否则,它将返回一个类型的数组Object
(并且不能将其强制转换为Class[]
)。
从API文档Collection.toArray(T[] a)
引述:
返回一个包含此集合中所有元素的数组;返回数组的运行时类型是指定数组的运行时类型。...
请注意,toArray(new Object[0])
功能与相同toArray()
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句