gpt4 book ai didi

java - 这段代码如何继承父类的内部类?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:16:46 26 4
gpt4 key购买 nike

下面是父类DblyLinkList

package JavaCollections.list;

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

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

class DListNode<T> {

private T item;
private DListNode<T> prev;
private DListNode<T> next;

DListNode(T item, DListNode<T> p, DListNode<T> n) {
this.item = item;
this.prev = p;
this.next = n;
}


}
.....
}

下面是派生类LockableList ,

  package JavaCollections.list;

import JavaCollections.list.DblyLinkList.DListNode;

public class LockableList<T> extends DblyLinkList<T> {

class LockableNode<T> extends DblyLinkList<T>.DListNode<T> {

/**
* lock the node during creation of a node.
*/
private boolean lock;

LockableNode(T item, DblyLinkList<T>.DListNode<T> p,
DblyLinkList<T>.DListNode<T> n) {
super(item, p, n); // this does not work
this.lock = false;
}

}

LockableNode<T> newNode(T item, DListNode<T> prev, DListNode<T> next) {
return new LockableNode(item, prev, next);
}

public LockableList() {
this.sentinel = this.newNode(null, this.sentinel, this.sentinel);
}


.....
}

如果class LockableNode<T> extends DListNode<T>在上面的代码中,错误:The constructor DblyLinkList<T>.DListNode<T>(T, DblyLinkList<T>.DListNode<T>, DblyLinkList<T>.DListNode<T>) is undefined发生在 super(item, p, n)

此错误通过以下语句解决:class LockableNode<T> extends DblyLinkList<T>.DListNode<T>

我如何理解这个错误?为什么解决了?

最佳答案

您正在内部类中重新声明类型变量 T。这意味着在内部类中,外部类的T是隐藏的,不能再被引用。

因为你有一个非静态内部类,你可以在那里删除类型变量 T:

class DListNode { ... }

因为它是从包含类继承的(而且您的意思可能是变量是相同的,无论如何)。

关于java - 这段代码如何继承父类的内部类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32306663/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com