似乎是一个非常简单的问题,但我在谷歌上找不到直接答案。
我在两个进程之间通过 UDP 有一个简单的 IPC channel 。每条消息都包装在 header 类中(例如数据驱动)。
例如。
enum Type
{
HELLO,
BYE,
LISTEN,
}
class Message
{
Type type;
Object data;
}
Message
是我发送到 ObjectOutputStream writeObject
的内容。这对于没有 data
的消息效果很好。有效负载(例如 HELLO
和 BYE
)。然而LISTEN
消息设置 data
属性到自定义类(具有所有 POD 类型),并且它似乎永远不会到达其他进程。当我 readObject
另一方面我什么也没得到。
所以我的问题是我需要一个工具writeObject
和readObject
在我的里面Message
类和/或 data's
内类类型?
--- 更新 1 ---
是的,Message
类型和基础 data
类型有implements Serializable
所有 eclipse 都会生成 serialVersionUID
为我。这样就足够了吗?我仍然没有看到 data
消息的一部分。
最佳答案
确保写入 ObjectOutputStream
的所有对象都是可序列化
。
Javadoc明确指出:
Only objects that support the java.io.Serializable interface can be written to streams.
确保类消息
实现Serialized
或Externalizable
界面。
根据您的更新,对象数据
是一个对象
,默认情况下,对象
不是可序列化
。您可以将其声明为可序列化数据
。如前所述,只有可序列化的对象才能写入 OutputStream。
关于java - 何时覆盖 writeObject/readObject?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10770120/