Java 基于列表的简单留言板实现中的NullPointerException
我正在尝试为一个简单的留言板创建一个列表结构,使用我自己的binodes实现,使用主题列表,这些主题本身就是消息列表。然而,当我试图向主题添加帖子时,我得到了一个空指针异常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
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
进行比较,如第二行所示。