Java 对泛型类型的引用应参数化。构造函数或类型参数相关的警告

Java 对泛型类型的引用应参数化。构造函数或类型参数相关的警告,java,generics,Java,Generics,我正在创建一个LinkedList类和一个LinkedListNode,我希望它们是泛型的,以便以后可以根据情况选择类型参数。 所以我创建了这两个类: 双链接列表类: public class DoublyLinkedList<T> { // sentinel before first item private NodeDoublyLinked<T> head; // sentinel after last item private No

我正在创建一个LinkedList类和一个LinkedListNode,我希望它们是泛型的,以便以后可以根据情况选择类型参数。 所以我创建了这两个类:

双链接列表类:

public class DoublyLinkedList<T> {

    // sentinel before first item
    private NodeDoublyLinked<T> head;
    // sentinel after last item
    private NodeDoublyLinked<T> tail;
    //number of elements
    private int size;

    // getter and setter methods here

    //add new node to the linked List
    public void addNode(T data){

        NodeDoublyLinked<T> prev = tail.getPrev();
        NodeDoublyLinked<T> node = new NodeDoublyLinked(data, prev, tail);
        tail.setPrev(node);
        size++;

    }
}
公共类双链接列表{
//第一项前的哨兵
私有节点双联头;
//最后一项后的哨兵
私有节点双联尾;
//元素数
私有整数大小;
//这里有getter和setter方法
//将新节点添加到链接列表中
公共无效添加节点(T数据){
NodeDoublyLinked prev=tail.getPrev();
NodeDoublyLinked节点=新NodeDoublyLinked(数据、上一个、尾部);
tail.setPrev(节点);
大小++;
}
}
以及NodeDoublyLinked类:

import java.util.Iterator;
import java.util.NoSuchElementException;

public class NodeDoublyLinked<T> implements Iterable<T> {

    private T data;
    private NodeDoublyLinked<T> prev;
    private NodeDoublyLinked<T> next;

    public NodeDoublyLinked(T value, NodeDoublyLinked<T> previousN, NodeDoublyLinked<T> nextN) {
        this.data = value;
        this.prev = previousN;
        this.next = nextN;
    }

    // getter and setter methods

    @Override
    public Iterator<T> iterator() {
        return new NodeDoublyLinkedIterator();
    }

    private class NodeDoublyLinkedIterator implements Iterator<T> {
        // the current node returned by next()
        NodeDoublyLinked<T> current = prev.next;

        @Override
        public boolean hasNext() {
            return current != null;
        }

        @Override
        public T next() {
            // code here

        }

        public void remove(){
            // code here

        }

    }

}
import java.util.Iterator;
导入java.util.NoSuchElementException;
公共类NodeDoublyLinked实现了Iterable{
私有T数据;
私有节点双链接prev;
私有节点下一步进行双向链接;
公共NodeDoublyLinked(T值,NodeDoublyLinked上一个,NodeDoublyLinked下一个){
这个数据=值;
this.prev=previousN;
this.next=nextN;
}
//getter和setter方法
@凌驾
公共迭代器迭代器(){
返回新的nodeDoublyLinkederator();
}
私有类NodeDoublyLinkedeter实现迭代器{
//next()返回的当前节点
NodeDoublyLinked current=prev.next;
@凌驾
公共布尔hasNext(){
返回电流!=null;
}
@凌驾
公共交通工具{
//代码在这里
}
公共空间删除(){
//代码在这里
}
}
}
在DoublyLinkedList类中的addNode方法中,在此行:

NodeDoublyLinked<T> node = new NodeDoublyLinked(data, prev, tail);
NodeDoublyLinked节点=新的NodeDoublyLinked(数据,上一个,尾部);
我得到一个警告:

NodeDoublyLinked是原始类型。泛型类型的引用 NodeDoublyLinked应参数化


我检查了,所以我知道应该在右侧指定一个类型参数,但它也不正确。我应该用一个类型参数(例如Integer)替换类型参数吗?NodeDoublyLinked的构造函数是否有问题?

“…因此我理解我应该在右侧指定一个类型参数,但它也不正确…”您所说的“它也不正确”是什么意思?你做了什么?(您还没有显示它。)
code
NodeDoublyLinked节点=新建NodeDoublyLinked(数据,上一个,尾部)
code
=>编译器返回一个错误。当您将
添加到构造函数的调用中时,会出现什么错误?没有像我调用的构造函数那样的构造函数。当我添加类似的构造函数时,构造函数中会出现一个错误:previousN无法解析为变量。另外,如果在调用中仅使用括号,则会出现错误。在构造函数调用中使用
可修复此问题:。