我在将对象数组转换为键值对数组时遇到问题, 具有键和值对象的通用类型。这是一个最小的例子。
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 更改为类(而不是接口(interface))也无济于事。
错误轨迹:
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
最佳答案
你需要一个数组吗?您可以使用 List
执行以下操作:
public static void main(String[] args) {
array = new ArrayList<Map.Entry<Integer, Integer>>();
}
private static List<Map.Entry<Integer, Integer>> array;
或者,您可以实例化非泛型类型,然后转换为泛型类型:
public static void main(String[] args) {
array = (Map.Entry<Integer, Integer>[])new Map.Entry[1];
}
private static Map.Entry<Integer, Integer>[] array;
但是,这会给您警告,通常不是首选。
关于Java 实例化新的 Map.Entry-array,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4080018/