带泛型的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 楼答案
为了指出你已经知道的,第二个是编译的。ArrayList不是数组,因此您的程序显然不会遇到一般数组问题
你可能想知道
ArrayList
是怎么做到的。在我看到的ArrayList
的实现中,它在内部使用了一个非泛型的Object
数组。这个班只是做了大量的演员表演