当前位置: 首页 > 知识库问答 >
问题:

如何在不实现可序列化接口的情况下序列化/反序列化对象?

奚晟
2023-03-14

如果一封邮件被发送到我的收件箱,我会收到一条消息,并将内容插入数据库。我有一个组织。springframework。整合。果心信息如下:

public void receive(Message<?> message)
{
    //I am inserting message contents into DB
}

现在,如果出现故障,我希望有故障安全恢复机制,我想的是将消息对象序列化到一个文件中,然后反序列化并更新到DB。

问题1。在这种情况下,如何序列化消息对象?2。除了序列化,还可以使用其他机制吗?

编辑我以前没有做过序列化,我听说类应该实现Serializable,以便使用ObjectOutputStream,在这种情况下,我不想创建Message的子类,那么如何将Message序列化到文件?

共有3个答案

云霖
2023-03-14

我不知道我是否完全理解。。但假设消息只包含大量字符串和一些整数,您可以直接使用ObjectOutputStream,将其写入文件(二进制),然后稍后再读入。为什么不呢?

Message e = new Message();
ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("whatever");
oos.writeObject(message);

// read in
ObjectInputStream ois = new ObjectInputStream(new FileInputStream("whatever");
Message e = (Message) ois.readObject();
龙景澄
2023-03-14

在这种情况下,如何序列化消息对象?除了序列化,还可以使用其他机制吗?

从消息中提取您需要的所有数据并保存。您可以选择任何方式进行此操作。

您可以通过使用保存的数据填充新消息来反序列化它。

洪浩
2023-03-14

当然,除了jvm之外,还有很多序列化机制。

  • XML

其中一些是基于文本的,一些是二进制的。所有这些都有缺点和优点。基于文本的是人类可读的,二进制的更快,占用更少的空间。

有一些java库可以处理上述所有格式:JAXB(XML)、Jackson(JSON)等。

 类似资料:
  • 我的问题是,有什么方法可以让我序列化/反序列化一个名为onlinePlayers的列表,该列表引用了“John1”的实例,它也碰巧在List allPlayers中,而不重复“John1”,同时仍然引用那个对象? 我猜当我反序列化allPlayers时,它将创建不同于原始对象的对象,所以onlinePlayers在反序列化后不可能仍然引用相同的对象。我是否应该编写一个自定义方法,在反序列化后将新创

  • 我有两个Java应用程序-和。需要通过套接字发送到类的Slave实例。 Master创建这个类的实例,序列化它并通过套接字发送到Slave。 在上,一切正常。没有异常。接收数据并尝试对其进行反序列化。引发以下异常 JAVAlang.ClassNotFoundException 在类中没有错误,因为如果我用优化函数=null创建它,那么就会毫无问题地反序列化它。我试图将实例序列化到中的文件中,然后也

  • 问题内容: 如何序列化未实现Serializable的对象?我不能将其标记为Serializable,因为该类来自第3方库。 问题答案: 您不能序列化未实现的类,但可以将其包装在可以实现的类中。为此,您应该在包装器类上实现和,以便可以以自定义方式序列化其对象。 首先,使您的非序列化字段。 在中,首先调用流以存储所有非瞬态字段,然后调用其他方法来序列化不可序列化对象的各个属性。 在中,首先调用流以读

  • 我正在尝试使用kryo序列化和反序列化到二进制。我想我已经完成了序列化,但似乎无法反序列化。下面是我正在处理的代码,但最终我想存储一个字节[],然后再次读取它。文档只显示了如何使用文件。

  • 本文向大家介绍java对象的序列化和反序列化,包括了java对象的序列化和反序列化的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了java对象的序列化和反序列化,供大家参考,具体内容如下 1. 什么是序列化        将对象转换为字节流保存起来,比如保存到文件里,并在以后还原这个对象,这种机制叫做对象序列化。(补充一句:把对象保存到永久存储设备上称为持久化) 2. 怎么实现序列化