【发布时间】:2010-11-02 16:48:22
【问题描述】:
我在将对象数组转换为键值对数组时遇到问题, 具有键和值对象的通用类型。这是一个最小的例子。
public class Main {
public static void main(String[] args) {
array = (Map.Entry<Integer, Integer>[]) new Object[1];
}
private static Map.Entry<Integer, Integer>[] array;
}
将 Map.Entry 更改为类(而不是接口)也不起作用。
错误跟踪:
run:
Exception in thread "main" java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [Ljava.util.Map$Entry;
at lab2.Main.main(Main.java:13)
Java Result: 1
【问题讨论】:
-
为什么你会认为
new Object[1]是与Map.Entry<Integer, Integer>[]兼容的类型?当然当然一个新的香草Object[]数组不能转换为更具体的东西。同样,这也不合法:(String)new Object();.
标签: java arrays generics casting