gpt4 book ai didi

java - 当使用 ObjectOutputStream/ObjectInputStream 传输自定义对象时,变量将被重置

转载 作者:行者123 更新时间:2023-12-01 18:38:22 24 4
gpt4 key购买 nike

我创建了一个服务器-客户端聊天室样式的应用程序,并且正在尝试传输我创建的自定义对象,该对象包含消息和使用客户端/服务器应用程序的人员的用户名。为此,我创建了一个名为 message 的单独类,其中包含两个静态变量,一个名为 username ,另一个名为 messageText:

public class message implements Serializable{

static String username = "";
static String messageText = "";

public message(String message, String user){
System.out.println("Setting username and messageText");
username = user;
messageText = message;
}

public message(Object recievedObject){
username = ((message) recievedObject).getUsername();
messageText = ((message) recievedObject).getMessageText();
}
}

我将此类的对象从服务器发送到客户端,如下所示:

message sendMessage = new message(enteredText, "SERVER");
output.writeObject(sendMessage);

客户接受如下:

message recievedMessage = (message) input.readObject();
cw.say(recievedMessage.getMessageText(), recievedMessage.getUsername());

但是,上面的 getMessageText() 和 getUsername() 方法都将返回接收端初始化变量的任何内容,并在发送端返回正确的值.

几个小时的尝试解决这个问题没有提供任何解决方案,所以非常非常感谢你们能给我的任何帮助!谢谢。

最佳答案

静态字段未序列化。如果你让它们成为非静态的,它应该可以工作

关于java - 当使用 ObjectOutputStream/ObjectInputStream 传输自定义对象时,变量将被重置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20861696/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com