初始化类型Generic的Java通用数组

所以我有一个我正在开发的通用HashTable类,我想将它一般用于任意数量的传入类型,我还想将内部存储数组初始化为LinkedList的数组(用于冲突),其中每个LinkedList都是提前指定的(对于类型安全性)是HashTable类中generics的类型。 我怎么能做到这一点? 以下代码最能说明我的意图,但当然不能编译。

public class HashTable { private LinkedList[] m_storage; public HashTable(int initialSize) { m_storage = new LinkedList[initialSize]; } } 

Java中的generics不允许创建具有generics类型的数组。 您可以将数组转换为generics类型,但这会生成未经检查的转换警告:

 public class HashTable { private LinkedList[] m_storage; public HashTable(int initialSize) { m_storage = (LinkedList[]) new LinkedList[initialSize]; } } 

这里有一个很好的解释,但没有深入了解为什么不允许通用数组创建的技术细节。

此外,您可以使用注释逐个方法地抑制警告:

 @SuppressWarnings("unchecked") public HashTable(int initialSize) { ... }