初始化类型通用的Java的通用阵列初始化类型通用的Java的通用阵列(Initialize Java

2019-05-13 14:12发布

所以我有这个通用的Hashtable类我发展,我想一般用于任何数量的传入类型的,我想也初始化内部存储阵列是LinkedList的年代(碰撞目的)的阵列,其中每个链表指定的时间提前(用于类型安全)是通用的从Hashtable类的类型。 我怎样才能做到这一点? 下面的代码是最好的澄清我的意图,但当然不能编译。

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

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

Answer 1:

在Java泛型不允许使用泛型类型的数组的创建。 你可以投你的阵列到一个通用的类型,但这样会产生一个未经检查的转换警告:

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

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

这里是一个很好的解释,没有进入的,为什么通用阵列的创建是不允许的技术细节。



Answer 2:

另外,还可以使用注释通过方法的基础上抑制方法的警告:

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


文章来源: Initialize Java Generic Array of Type Generic