有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

带泛型的java数组

我读了What's the reason I can't create generic array types in Java?。我在尝试此代码时发现:

HashMap<String, String>[] ret = new HashMap<String, String>[arraySize];

我决定“放纵”并尝试其他东西

ArrayList<HashMap<String, String>> ret = new ArrayList<HashMap<String, String>>();

现在,我不明白的是为什么第一个选项不好/不受支持,而第二个选项会编译

我错过了什么?在第一个方法中,我得到一个错误,无法编译,而第二个方法没有编译器问题

我更喜欢遵循智能编程原则,但不理解这种特殊情况下的区别


共 (1) 个答案

  1. # 1 楼答案

    为了指出你已经知道的,第二个是编译的。ArrayList不是数组,因此您的程序显然不会遇到一般数组问题

    你可能想知道ArrayList是怎么做到的。在我看到的ArrayList的实现中,它在内部使用了一个非泛型的Object数组。这个班只是做了大量的演员表演