每天都在头秃 2023-05-11 11:01 采纳率: 96.7%
浏览 25
已结题

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)


```

  • 写回答

3条回答 默认 最新

  • CSDN专家-sinJack 2023-05-11 11:20
    关注
     Object o = IOstream.readMessage(socket);
    

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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 5月19日
  • 已采纳回答 5月11日
  • 创建了问题 5月11日