我正在尝试制作一个简单的TCP聊天程序,当用户发送消息“/ list”时,我想从服务器回复所有在线用户的列表。
else if (cmd.text.equals("/list")){
//Sends the client a list of all registered users
UserList userList = new UserList();
System.out.println(online_users);
if (online_users.values()!=null){
userList.users.addAll(online_users.values());
}
c.sendTCP(userList);
}
但是,即使我已经测试并且知道online_users确实包含要添加到userList.users的值,命令userList.users.addAll()仍然会抛出错误。这是错误:
Exception in thread "Server" java.lang.NullPointerException
at com.andrewlalisofficial.ChatServer.checkCommand(ChatServer.java:128)
at com.andrewlalisofficial.ChatServer$1.received(ChatServer.java:68)
at com.esotericsoftware.kryonet.Server$1.received(Server.java:61)
at com.esotericsoftware.kryonet.Connection.notifyReceived(Connection.java:246)
at com.esotericsoftware.kryonet.Server.update(Server.java:208)
at com.esotericsoftware.kryonet.Server.run(Server.java:356)
at java.lang.Thread.run(Thread.java:745)
其中第128行是userList.users.addAll(online_users.values());我希望能够简单地将Map online_users中的值集合添加到新的String列表中并将其发送出去。我不明白为什么会有错误。