【发布时间】:2012-04-04 05:23:40
【问题描述】:
我已经成功地使用 ObjectOutputStream 和 ObjectInputStream 为我正在编写的服务器和客户端序列化和反序列化对象。服务器和客户端通常在两台不同的机器上,但由于它是回合制纸牌游戏,我也希望用户在本地玩,然后客户端和服务器都将在同一台机器上运行。
现在,我正在编写我的连接接口的替代实现。该接口包含void sendToServer(Object)和Object receiveFromServer()等方法
通常 sendToServer(Object) 函数只会通过 ObjectOutputStream 发送对象,但由于对象在同一台机器上,我可以创建一个对象队列并在每次调用发送或接收时推送和弹出。然而,问题是我不希望客户端引用服务器使用的对象,我希望它是一个副本。而且我没有复制构造函数,并且对象不可克隆。
在我的情况下你会怎么做?
【问题讨论】:
-
如果在同一台机器上玩,是运行在同一个JVM还是不同的JVM?
-
为什么不直接添加一个拷贝构造函数或者是可克隆的?
-
再告诉我为什么不能简单地序列化内存中的对象,然后再次反序列化它们以使用对象输入和输出流复制它们?
-
@edalorzo:再告诉我你为什么没有给出答案而不是评论? :) OP 可能没有想到这一点。
-
@Tom 我明白你的意思了!只是问题说“没有ObjectOutputStream”,所以我认为我一定错过了问题中的一些内容,即不能使用它的原因。我正在寻找确认这是避免建议任何不当内容的要求。否则,正如您指出的那样,我的问题可能是另一种选择:)
标签: java serialization objectoutputstream