java - 初始化泛型类型的 Java 泛型数组

标签 java generics hash

所以我有这个正在开发的通用 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];
    }
}

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

关于java - 初始化泛型类型的 Java 泛型数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1025837/

相关文章:

java - 无法从 Windows 中的 Tomcat 服务器访问资源

java - 使用本地类时构造函数引用无效?

typescript :可变函数参数取决于前面的参数

java - php 的 hmac sha256 实现与 java 的不匹配

C++ 为 T 的派生类覆盖 hash<T>

java - 基于类反序列化json时发生异常,该类内部有一个接口(interface)类型

java - 什么是 Java 堆栈与 native 内存的映射。

c# - 如何使用泛型在基类的方法中指定输出参数的类型?

java - 是否可以在方法定义中使用普通的 BiFunction

c# - 多次比较字符串