Java 基于列表的简单留言板实现中的NullPointerException

Java 基于列表的简单留言板实现中的NullPointerException,java,list,null-pointer,Java,List,Null Pointer,我正在尝试为一个简单的留言板创建一个列表结构,使用我自己的binodes实现,使用主题列表,这些主题本身就是消息列表。然而,当我试图向主题添加帖子时,我得到了一个空指针异常 Exception in thread "main" java.lang.NullPointerException at TopicList.remove(TopicList.java:110) at TopicList.addPost(TopicList.java:80) at TestHarnes

我正在尝试为一个简单的留言板创建一个列表结构,使用我自己的binodes实现,使用主题列表,这些主题本身就是消息列表。然而,当我试图向主题添加帖子时,我得到了一个空指针异常

Exception in thread "main" java.lang.NullPointerException
    at TopicList.remove(TopicList.java:110)
    at TopicList.addPost(TopicList.java:80)
    at TestHarness.main(TestHarness.java:13)
我的代码如下: TestHarness.main

TopicList list = new TopicList();
list.addTop(new Message("user1", "post1"), "Topic 0");
list.addTop(new Message("user2", "post2"), "Topic 1");
list.addPost(new Message("user3", "post3"), 0);
System.out.println(list);


TopicList.addPost()

public void addPost(Message m, int id){
    Topic t;
    t = (Topic) getTopicNode(id).head();
    this.remove(getTopicNode(id)); //This is line 80 in my code
    t.addMessage(m);
    topiclist = new Node(t, topiclist);
    }


TopicList.remove()

private void remove(Node n){
    if (n.tail().equals(null)){ // this is line 110
        n.prev().nullTail();    
    }  
    else{
        n.prev().join(n.tail());
    }
}   
感谢您的帮助。

如果
n.tail()
null
,则以下行将抛出NPE:

if (n.tail().equals(null)){
您需要检查:

if (n.tail() == null){ 

相反。

您还没有回答自己的问题吗
n.tail()
我猜是
null
。嗨。不幸的是,这些信息不足以帮助您。有两个可能为null的引用。“n”为null或“n.tail()”结果为null。如果n为null,则remove(n)的调用方传入null。第80行显示使用“getTopicNode(id)”调用remove,它可能为null。因此,必须调试代码才能找到问题。[如果n.tail()为null,那么代码的其他部分可能会出现问题:列表节点的结构或设置可能是错误的。]是的,
n.tail().equals(null)
不是正确的方法,这将不可避免地在
equals
有机会为真之前抛出NullPointerException。您需要直接与
null
进行比较,如第二行所示。