Java实例化新的Map.Entry-array

时间:2010-11-02 16:48:23

标签: java arrays generics casting

我在将对象数组转换为键值对数组时遇到问题, 具有键和值对象的泛型类型。这是一个最小的例子。

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

2 个答案:

答案 0 :(得分:2)

你需要一个阵列吗?您可以使用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;

但是,这会给你警告,通常不是首选。

答案 1 :(得分:0)

您无法将Object投射到Map。你想做什么?