如何创建包含Java中泛型的自定义类的数组

问题描述 投票:1回答:1

我有一项任务,目标是使用通用键和值创建HashTable实现。为了处理冲突,我们被告知使用单独的链接。因此,我尝试这样做:

public class HashTable<K, V> implements Table<K, V> {

    private Node[] generics;

    public class Node {

        V value;
        Node next;

        public Node(V val) {
            value = val;
        }

    }

    public HashTable(int size) {
        generics = (Node[]) new Object[size];
    }

}

对于单独的链接,我想使用链表实现(还有其他方法),这就是为什么我需要generics来容纳Node的原因,而不仅仅是V的原因。我不能只写generics = new Node[size];的原因是Node类包含一个泛型,并且不允许创建泛型数组。对于此分配,此变通办法会产生“未经检查的演员表”警告,是可以接受的。

然后,在驱动程序中,它尝试Table<String, String> ht = new HashTable<String, String>(5);并获取ClassCastException。对于上下文,当genericsV[]时,没有ClassCastException。

所以,我的问题是:如何创建一个自定义类数组,其中自定义类包含泛型(不更改驱动程序?)>

我有一项任务,目标是使用通用键和值创建HashTable实现。为了处理冲突,我们被告知使用单独的链接。因此,我尝试这样做:public ...

java arrays generics classcastexception
1个回答
0
投票

尝试以下解决方案

public class HashTable<K, V> {
    private Node<V>[] generics;

    static class Node<V> {
        V value;
        Node next;
        public Node(V val) {
            value = val;
        }
    }
    private HashTable(int size) {
        generics = (Node<V>[]) new Node[size];
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.