繁体   English   中英

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

[英]Initialize Java Generic Array of Type Generic

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

public class HashTable<K, V>
{
    private LinkedList<V>[] m_storage;

    public HashTable(int initialSize)
    {
        m_storage = new LinkedList<V>[initialSize];
    }
}

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

public class HashTable<K, V>
{
    private LinkedList<V>[] m_storage;

    public HashTable(int initialSize)
    {
        m_storage = (LinkedList<V>[]) new LinkedList[initialSize];
    }
}

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM