java中通用数组的解决方法

时间:2012-10-24 10:12:23

标签: java generics

我有一项任务,我需要制作自己的(简单)通用链表:

public class Node<T> {

   private int key;
   private T data;
   private Node<T> nextNode;

}

但我需要用哈希表实现一个字典。我想制作一个包含Node的列表。如果发生冲突(两个类型的对象分散到同一个节点,我只需链接它们 - 链接列表)。

我必须自己实施,没有外界帮助(已经实施过的列表或者什么都有)

我想怎么做:

public class GenericDictionary<T> implements GenericDictionary_interface<T> {

    private int capacity;   
    private Node<T> [] slots;

    public GenericDictionary () {   
        this.capacity = 31;
        slots = new Node<T>[capacity];  // the array I need which I disperse to
    }
}
然而,这并非完全可能。我确实尝试过阅读这个主题,尝试在这里搜索...但我根本没有得到它。

我唯一的要求是......不要对变量/方法名称保持懒惰,请让它们易于理解。

1 个答案:

答案 0 :(得分:5)

这是你能做的最好的事情:

    @SuppressWarnings("unchecked")
    Node<T>[] slots = (Node<T>[]) new Node<?>[capacity];

你无法摆脱警告(除了压制它)。当需要泛型类的数组时,需要使用未指定的泛型类型创建数组,然后将其强制转换。