所以我有这个我正在开发的通用HashTable类,我想将它一般用于任意数量的传入类型,我还想将内部存储数组初始化为LinkedList的数组(用于冲突目的) ),其中每个LinkedList被提前指定(对于类型安全性)是HashTable类的泛型类型。我怎么能做到这一点?以下代码最能说明我的意图,但当然不能编译。
public class HashTable<K, V>
{
private LinkedList<V>[] m_storage;
public HashTable(int initialSize)
{
m_storage = new LinkedList<V>[initialSize];
}
}
答案 0 :(得分:15)
Java中的泛型不允许创建具有泛型类型的数组。您可以将数组转换为泛型类型,但这会生成未经检查的转换警告:
public class HashTable<K, V>
{
private LinkedList<V>[] m_storage;
public HashTable(int initialSize)
{
m_storage = (LinkedList<V>[]) new LinkedList[initialSize];
}
}
Here是一个很好的解释,没有深入了解为什么不允许创建通用数组的技术细节。
答案 1 :(得分:0)
此外,您可以使用注释逐个方法地抑制警告:
@SuppressWarnings("unchecked")
public HashTable(int initialSize) {
...
}