我看过What's the reason I can't create generic array types in Java?。当我尝试这段代码时,我来到了它:
HashMap<String, String>[] ret = new HashMap<String, String>[arraySize];
我决定&#34;狂野&#34;并尝试别的东西
ArrayList<HashMap<String, String>> ret = new ArrayList<HashMap<String, String>>();
现在,我不明白为什么第一个选项不好/不支持,第二个选项编译。
我错过了什么?在第一种方法中,我得到一个错误,并且在第二种方法没有编译器问题时无法编译。
我更喜欢遵循智能编程原则,但不了解这种特殊情况的区别。
答案 0 :(得分:1)
指出你已经知道的东西,第二个编译。 ArrayList不是一个数组,所以你的程序显然不会遇到泛型数组问题。
你可能想知道ArrayList
如何做到这一点。在我见过的ArrayList
的实现中,它在内部使用Object
数组 - 不是通用的。这堂课只是做了很多演员。