构造函数上的 stackoverflowerror

stackoverflowerror on Constructor

我是一个新的程序员,我不能很好地处理错误。 所以这件事发生了:

Exception in thread "main" java.lang.WhosebugError
    at List.<init>(List.java:23)
    at ST.<init>(ST.java:48)
    at List.<init>(List.java:23)
    at ST.<init>(ST.java:48)
    at List.<init>(List.java:23)
    at ST.<init>(ST.java:48)
    at List.<init>(List.java:23)
    at ST.<init>(ST.java:48)
    at List.<init>(List.java:23)
    at ST.<init>(ST.java:48)
    at List.<init>(List.java:23)
    at ST.<init>(ST.java:48)
    ....

它会永远持续下去。 我正在尝试 code:48 这一行。 List stopwordslist=new List("Stopwords");

这是整个列表 class:

public class List extends ST {  

private ListNode firstNode;
public String ListName;

public List(String name){
    ListName=name;
    firstNode=null;
}
public void putWord(String word){
    ListNode node = new ListNode(word);
    if ( firstNode==null ) 
        firstNode = node;
    else { 
        node.nextNode =firstNode;
        firstNode.prevNode=node;
        firstNode = node;
    }
}
public void removeWord(String word) throws NoSuchElementException{
    if ( firstNode==null) 
        throw new NoSuchElementException( ListName );
    if ( firstNode.nextNode==null && firstNode.stopWord.equalsIgnoreCase(word))
    firstNode= null;
    else
    {
        ListNode current = firstNode;
        while ( current.nextNode != null )
            if (current.nextNode.stopWord.equalsIgnoreCase(word)){
            current.nextNode = current.nextNode.nextNode;
            if (current.nextNode.nextNode!=null) current.nextNode.nextNode.prevNode=current;                
            }
            else current=current.nextNode;

    } 
}
}

有什么想法吗?

我怀疑你声明了成员变量,其中List构造了一个ST,ST也构造了一个List。即使您的 List 构造函数没有显示 ST 的创建,如果它是创建 ST 的成员变量,它也会有效地添加到构造函数的顶部。你有没有像..

class ST {
    List stopwordslist=new List("Stopwords");

    …

class List {
    ST st = new ST();

    public List(String name) {
         ListName=name;
         firstNode=null;
    }

这相当于……

class List {
    ST st;

    public List(String name) {
         st = new ST();
         ListName=name;
         firstNode=null;
    }

好的..我看到你更新的问题了。

列表扩展 ST。所以 ST 的构造器看起来也在构造一个 List(构造 List,构造 ST 等等)