什么是Java中的序列化?

可能重复:
什么是对象序列化?

我使用Swing创建了一个小型RSS阅读器应用程序,Eclipse一直告诉我“可序列化类MochaRSSView没有声明类型为long的静态最终serialVersionUID字段”

什么是序列化,它有什么好处?

Serializable是一个标记接口,它告诉JVM它可以将对象的状态写出到某个流(基本上读取所有成员,并将它们的状态写入流,或写入磁盘或其他东西)。 默认机制是二进制格式。 您还可以使用它来克隆事物,或者在调用之间保持状态,通过网络发送对象等。

你可以让eclipse为你生成一个(基本上只是一个很长的随机但唯一的ID)。 这意味着您可以控制何时认为类与序列化版本兼容。

(注意:所有非临时成员变量必须是可序列化的类,否则您将收到错误 – 因为JVM将通过结构写出每个对象的状态,直到将原语写入ObjectOutputStream的级别) 。

Java序列化—–您是否曾见过序列化对象中的内容? 我将向您解释什么是java序列化,然后为您提供序列化的示例。 最重要的是,让我们探索序列化对象内部的内容及其含义。 这是java序列化的内部结构,它是如何工作的。 如果您想拥有自己的java序列化实现,本文将为您提供一个很好的启动平台。

什么是Java序列化? java序列化的主要目的是将对象写入流中,以便可以通过网络传输该对象,并且可以再次重建该对象。 当涉及两个不同的方时,您需要一个协议来重新生成完全相同的对象。 Java序列化API就是为您提供的。 您可以使用序列化function的其他方法是,您可以使用它来执行深层复制。

为什么我在上面的定义中使用’主要目的’是,有时人们使用java序列化作为数据库的替代品。 只是一个占位符,您可以在其中跨会话持久保存对象。 这不是java序列化的主要目的。 有时,当我采访Java候选人时,我听到他们说java序列化用于存储(保存状态)一个对象并检索它。 他们将它与数据库同义使用。 这是序列化的错误观念。

你如何序列化? 如果要序列化对象,则相应的类应实现可序列化的标记接口。 它只是通知编译器这个java类可以被序列化。 您可以标记不应序列化为瞬态的属性。 您打开一个流并将对象写入其中。 Java API负责序列化协议,并将java对象保存在符合协议的文件中。 反序列化是将对象从文件恢复到其原始forms的过程。

这里的协议意味着,序列化人与反序列化人之间的理解。 包含序列化对象的文件内容是什么?

序列化将对象写入可读的forms,并允许在不同的时间重新创建对象。 因此,如果我在一台JVM下的计算机A上创建一个小部件,将其序列化并保存并将其发送到运行不同的计算机B,则另一个JVm将能够对其进行反序列化并使用相同的值和结构重新创建它

Java序列化是一种持久化对象结构的方法。

可序列化类的最佳做法是将serialVersionUID声明为private static final long编译时常量。 这用于检查声称对象数据和类代码是否兼容。

那么为什么Eclipse会告诉你这个呢? 您正在扩展的类(或者您正在实现的可能接口)可能实现了java.io.Serializable 。 这意味着包括你的所有子类型都是可序列化的。 几乎可以肯定你不在乎。 您应该能够通过在类或包(在package-info.java )应用@SuppressWarnings("serial")来清除警告。 如果你想强制阻止你的类的实例被序列化,那么添加(从内存中):

 private static final java.io.ObjectStreamField[] serialPersistentFields = { null }; private void writeObject( java.io.ObjectOutputStream ou ) throws java.io.IOException { throw new java.io.NotSerializableException(); } private void readObject( java.io.ObjectInputStream in ) throws java.io.IOException, java.lang.ClassNotFoundException { throw new java.io.NotSerializableException(); } private void readObjectNoData( ) throws java.io.ObjectStreamException { throw new java.io.NotSerializableException(); } 

它可能不是世界上最好的思想系统(虽然它比许多人认为的要好得多)。

序列化是将对象转换为磁盘可存储格式的过程,以便稍后重新加载。 查看链接以获取更多信息!

序列化是一种获取对象(类的一个实例)并将其设置为传输的方式 – 跨网络,到磁盘等。

序列化是将对象实例的表示写入流(或者到字节序列)的过程。 看看Sun所说的内容: http : //java.sun.com/developer/technicalArticles/Programming/serialization/