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

标签 java networking stream objectinputstream objectoutputstream

我创建了一个服务器-客户端聊天室样式的应用程序,并且正在尝试传输我创建的自定义对象,该对象包含消息和使用客户端/服务器应用程序的人员的用户名。为此,我创建了一个名为 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/

相关文章:

java - 如何解决javaFx中的TARGETINVOCATIONEXCEPTION?

java.lang.OutOfMemory错误: Java heap space (Project Euler 14)

ios - iPhone P2P - GKSession 是否不可靠超过 4 个同行?

如果我从 wi-fi 切换到 3g,ios https 会失败

scala - 与 Scala 中的简单正则表达式匹配的字符串流

node.js - 有什么方法可以重用 NodeJS 中的管道转换链吗?

java - 如何使用坐标在 map android上查找位置

java - Java 中可以不使用循环从 3 维数组中获取 2 维数组吗?

python - scapy 中嗅探功能的过滤选项

dictionary - 在流中使用 map 时出现Dart问题