Java聊天室-好友列表更新问题

Java网络编程之简易聊天室
零零散散做了一周,这个问题一直解决不了,实在不知道是哪里出了问题。
package com.company.Client.tools;
import com.company.Client.view.FriendList;
import com.company.Client.view.TalkingView;
import com.company.Shared.Message;

import java.io.ObjectInputStream;
import java.net.Socket;

/**
 * @Title:
 * @Package
 * @Description:客户端连接到服务器线程(对应ConnectThread)
 * @author: Yeeasy
 **/
public class UserThreads extends Thread {

    private Socket socket;
    ObjectInputStream in;

    public UserThreads(Socket socket){
        this.socket=socket;
    }

    public void run() {
        while (true) {

            try {
                //接收ConnectThread来的信息
                in = new ObjectInputStream(socket.getInputStream());
                Message msg = (Message) in.readObject();


                if(msg.getMsgType().equals("onlineSet")){
                    //修改用户列表好友在线状态
                    FriendList friendList=FriendListManage.getFriendList(msg.getUser());
                    System.out.println("进入更新列表");
                        friendList.UpdateFriendList(msg);

                }else if(msg.getMsgType().equals("talk")){

                    System.out.println( msg.getUser()+"说:" + msg.getContent());
                    TalkingView talkingView=TalkingViewManage.getTalkingView(msg.getUser()+" "+msg.getFriend());
                    talkingView.showMessage(msg);

                }


            } catch (Exception e) {
                e.printStackTrace();
            }
        }

    }

    public Socket getSocket() {
        return socket;
    }

}

结果就是 friendList.UpdateFriendList(msg)报空指针
加个!null判断,进入了UpdateFriendList,但是还是不会更新好友列表
下面是源码,可能看起来花点时间,麻烦了

[](链接: https://pan.baidu.com/s/1U9EwsWh5gZQLUonm5WhwHg?pwd=5sgh 提取码: 5sgh 复制这段内容后打开百度网盘手机App,操作更方便哦)

FriendList的构造器有段代码有问题,你不能重新把Friends赋值为new JLabel(5),这样的话会导致每次Friends都会是一个空的数组,所以你里面不会有用户信息,而且你的Friends不是静态的,而你每次登录后都是new FriendList对象,所以每个FriendList对象里面的Friends都是不一样的,你这里要实现在线好友统计的效果必须要用单例才可以。
再提一句代码规范的问题,方法名和常量名一定要用小写字母开头,不然看着代码很头大,会看成一个类名。

以下回答结合了ChatGPT:
这段代码中出现空指针异常的原因可能是FriendListManage.getFriendList(msg.getUser())返回的friendList对象为null。请检查FriendListManage.getFriendList()方法的实现是否正确,并确保该方法能够正确返回FriendList对象。如果返回值确实为null,则需要对null进行判断并进行相应处理,如创建新的FriendList对象并添加到FriendListManage中。另外,如果FriendList的更新方法UpdateFriendList()没有正确实现,也可能导致更新失败,请检查该方法的实现是否正确。