我在写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对象,打印一下内容是什么。
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!