在HashMap和ArrayList中实现类型参数

时间:2014-04-20 16:07:17

标签: java generics

HashMap<K,V>将数据存储为条目数组。即

Entry<K,V>[] table

和Entry中的键和值的类型分别是K和V.

但是..

ArrayList<E>将数据存储为对象数组。即。

Object[] elementData

所以想知道为什么ArrayList不使用E?

类型的数组

1 个答案:

答案 0 :(得分:4)

简短的回答:尝试自己实施,看看会发生什么。答案很长:因为Java使用类型擦除,并且您需要在运行时知道类型以便创建新数组,new E[size]将无法编译,因此如果没有某种黑客攻击,它就无法做到这一点。但是,您不需要知道通用参数来创建新数组,因为它们已被删除,因此您无需在运行时了解它们。