Java 实例化新的 Map.Entry-array

标签 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 更改为类(而不是接口(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/

相关文章:

java - 为什么德鲁伊无法破译密码

来自另一个方法的 Javadoc 引用参数

java - Android 版本从 2.2 更改为 4.2.2

javascript - 以表格格式打印二维数组

scala - 类型和泛型 : difference between `[X <: Int]` and `{type X <: Int }`

generics - 如何声明具有生命周期名称参数化特征绑定(bind)的泛型函数?

java - 如何从 Java 对象生成 html?

java - 如何将文本文件中的字符串分配给Java的整数数组?

c++ - 当我们有常规数组时,为什么我们需要指向数组的指针?

java - Java 中的泛型 : How do I make this example work?