构造函数的stackoverflower错误

时间:2015-01-13 01:36:26

标签: java constructor stack-overflow

我是一名新程序员,我无法很好地处理错误。 所以这件事发生了:

Exception in thread "main" java.lang.StackOverflowError
    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)
    ....

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

这是整个`List 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;

    } 
}
}

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

我怀疑你已经声明了成员变量,其中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;
    }

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

List扩展ST。所以ST的构造函数看起来像是在构造一个List(构造List,构造ST等)