Exception in thread "Thread-0" java.lang.ClassCastException

我在写Java聊天室时对消息进行强制类型转换出现问题,不知道该如何改进代码


```java
public class Message implements Serializable {
    private static final long serialVersionUID =11;
    private String user;
    private String password;
    private String sender;//发送者
    private String receiver;//接受者
    private String content;//消息内容
    private MessageType messageType;//消息类型
    private Boolean LoginSuccess;//登陆成功没
    private String note;//系统发送消息
    private String[] OnlineUserList;//在线用户列表
    public static long getSerialVersionUID(){
        return serialVersionUID;
    }
    public String getUser(){return  user;}

    public void setUser(String user) {
        this.user = user;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public MessageType getMessageType() {
        return messageType;
    }

    public void setMessageType(MessageType messageType) {
        this.messageType = messageType;
    }

    public Boolean getLoginSuccess() {
        return LoginSuccess;
    }

    public void setLoginSuccess(Boolean loginSuccess) {
        LoginSuccess = loginSuccess;
    }

    public String[] getOnlineUserList() {
        return OnlineUserList;
    }

    public void setOnlineUserList(String[] onlineUserList) {
        OnlineUserList = onlineUserList;
    }

    public String getNote() {
        return note;
    }

    public void setNote(String note) {
        this.note = note;
    }

    public String getsender(){
        return sender;
    }
    public void setSender(String sender){
        this.sender =sender;
    }

    public String getReceiver(){
        return receiver;
    }
    public void setReceiver(String receiver){
        this.receiver =receiver;
    }

    public String getContent(){
        return content;
    }
    public void setContent(String content){
        this.content =content ;
    }


}




```java
public void run(){
        while (true) {
            Object o = IOstream.readMessage(socket);
            //处理读到的消息
            Message mes;
            mes = (Message) o;
            if (mes.getMessageType() == MessageType.login) {//处理登陆信息
                login_result(mes);

            } else if (mes.getMessageType()==MessageType.chatting) {//处理私聊消息
                chatting(mes);
            } else if (mes.getMessageType()==MessageType.note) {//处理系统消息
                note(mes);
            } else if (mes.getMessageType()==MessageType.userOnlineList) {//获取在线用户列表
              onLineUserList(mes);
            }

        }
    }


```报错信息
Exception in thread "Thread-0" java.lang.ClassCastException: class java.lang.String cannot be cast to class classentity.common.example.Message (java.lang.String is in module java.base of loader 'bootstrap'; classentity.common.example.Message is in unnamed module of loader 'app')
    at Client.ClientThread.run(ClientThread.java:50)


```

 Object o = IOstream.readMessage(socket);

返回的是字符串,不能直接强转为Message对象,打印一下内容是什么。

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632
  • 这篇博客: 错误:Exception in thread “main“ java.lang.ClassCastException中的 解决办法 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
    • 升级springboot版本:
      在这里插入图片描述
    • 把jdk版本降为1.8(对于很多老项目,升级springboot版本会需要修改较多的配置,相对比较麻烦,而修改jdk版本相对容易一点儿):快速修改JDK版本(另一篇博客中做了详细讲解)