如何在泛型类构造函数中为一个变体提供特定类型?



这是我写的:

public class LinkedListDeque<Whatever> {
private class Node {
private Whatever item;
private Node prev;
private Node next;
private Node(Whatever i, Node p, Node n) {
item = i;
prev = p;
next = n;
}
}
private Node sentinel;
private int size;
/** Creates an empty Deque. */
public LinkedListDeque() {
sentinel = new Node(null, sentinel, sentinel);
size = 0;
}
}

现在我想用类似的东西替换底部第四行中的nullInteger 1然后我的IDE(Intellij(告诉我',' or ')' expected.

问题是:

我想在这个构造函数中设置sentinel.itemequals to 1,这可能吗?

退一步说,有没有其他代码可以安全地替换代码null

我认为您的真正问题不是正确的实现:

  1. 您的LinkedListDeque具有sentinel节点,即队列的头部。因此,如果队列为空,则size = 0sentinel = null;
  2. 当您将新项目添加到队列中时,您必须检查它是否为空(即size = 0sentinel = null(或不(。如果为空,只需创建新的Node,否则将新节点添加到队列的末尾;
  3. 根据上面,你不应该改变Node.item,即它应该是finalprivate Whatever item

我认为你的类可能看起来像这个(这只是一个例子(

public final class LinkedListDeque<Whatever> {
private class Node {
private final Whatever item;
private Node prev;
private Node next;
private Node(Whatever item) {
this.item = item;
}
}
private Node sentinel;
private int size;
public void add(Whatever item) {
Node node = new Node(item);
if (size != 0) {
node.next = sentinel;
sentinel.prev = node;
}
sentinel = node;
size++;
}
}

最新更新