import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
/**
*
* 对象序列化与反序列化.
* 反序列化时未调用任何构造.
* 反序列化时必须让JVM可以找到被返序列化的对象的class文件,否则ClassNotFoundException
*
*/
public class SerialDemo {
public static void main(String[] args) throws Exception {
final String file = "d:\\demo.txt";
Demo demo = new Demo(5);
serialize(demo, file);
deserialize(file);
}
//序列化
static void serialize(Object obj, String filePath) throws Exception{
FileOutputStream file = new FileOutputStream(filePath);
ObjectOutputStream out = new ObjectOutputStream(file);
out.writeObject(obj);
out.close();
System.out.println("serialize end.");
}
//反序列化
static void deserialize(String filePath) throws Exception{
FileInputStream file = new FileInputStream(filePath);
ObjectInputStream in = new ObjectInputStream(file);
Object obj = in.readObject();
in.close();
System.out.println(obj.toString());
}
static class Demo implements Serializable{
private static final long serialVersionUID = -3161633102764071778L;
private int count;
public Demo(int n){
System.out.println("demo construct(n)");
count = n;
}
public String toString(){
return Integer.toString(count);
}
}
}
/*
demo construct(n)
serialize end.
5
*/
分享到:
相关推荐
XML序列化对象详解 - **说明**:XML序列化提供了一系列的特性来控制序列化的过程。 - **`[XmlElement]`**:默认情况下,使用此特性表示该成员将作为XML元素序列化。 - **`[XmlAttribute]`**:表示该成员将作为XML...
在Java中,如果一个对象需要支持序列化,那么它的类必须实现`java.io.Serializable`接口。在`SerializUtil.zip`这个Eclipse工程中,包含了一个名为`SerializUtil`的工具类,用于简化Java对象的序列化和反序列化操作...
序列化和反序列化是计算机科学中的重要概念,特别是在数据存储、网络通信和持久化对象等领域。简单来说,序列化是将对象的状态转换为可存储或传输的数据格式,而反序列化则是将这些数据恢复为原来的对象状态。在这个...
在Java中,实现对象序列化可以很简单,只需要让类实现`java.io.Serializable`接口即可。例如: ```java public class MySerializableObject implements Serializable { private String name; private int age; ...
在Android中,对象序列化到XML通常涉及到`XmlSerializer`类,这是`java.io.IOException`的子类,提供了一种将Java对象写入XML输出流的方法。这个过程包括以下几个步骤: 1. **创建XMLSerializer实例**:首先,你...
“指纹”技术通常是指用于验证序列化对象完整性的机制。通过计算序列化后的字节流的哈希值,可以确保对象在序列化和反序列化过程中的完整性。这对于安全性要求较高的应用场景尤为重要。 ### 结论 Java序列化技术...
在使用Jedis存储Java对象到Redis时,通常会先序列化对象,将其转化为二进制流,然后存储为Redis的String类型;当从Redis读取数据时,则进行反序列化,将二进制流还原为原来的对象。 Jedis库提供了丰富的API用于与...
1. Object Serialize:Java内置的序列化机制,通过实现`Serializable`接口来实现对象的序列化。在进行反序列化时,Java会验证`serialVersionUID`,确保对象在序列化和反序列化之间的一致性。 2. JSON:通过将对象...
在Java中,可以使用`java.io.Serializable`接口标记一个类使其支持序列化,然后使用`ObjectOutputStream`来执行序列化操作。 接着,我们讨论反序列化。这是序列化的逆过程,它从字节流中重建对象实例。在Java中,...
序列化是将对象的状态转换为可以存储或传输的数据格式的过程,而反序列化则是将这些数据恢复为原来的对象状态。在Unity中,这通常用于保存游戏进度、网络通信或者在不同系统间交换数据。 Protobuf的优点包括: 1. *...
Java中的序列化是通过实现`java.io.Serializable`接口来标记一个类可以被序列化。当一个对象被序列化时,它的状态(包括字段值)会被写入到输出流中;反序列化则相反,从输入流中读取这些数据并创建对象的副本。这个...
在Java中,通常只有实现了`java.io.Serializable`接口的类才能被序列化。然而,描述中提到,即使类如`javax.naming.spi.ContinuationDirContext`没有实现`Serializable`接口,Hessian仍然能够对其进行序列化,这是...
在Java中,内置了`java.io.Serializable`接口,任何实现了这个接口的类的对象都可以被序列化。使用`ObjectOutputStream`进行序列化,`ObjectInputStream`进行反序列化。Python有pickle库,C#有BinaryFormatter,...
常见的序列化技术包括Java的`java.io.Serializable`接口,.NET框架的`System.Runtime.Serialization.Formatters.Binary.BinaryFormatter`类,JSON序列化如`jsonpickle`(Python)、`Gson`(Java)或`Newtonsoft.Json...
// 序列化对象到文件 using (FileStream stream = new FileStream("serialized.bin", FileMode.Create)) { formatter.Serialize(stream, obj); } // 反序列化文件回对象 using (FileStream stream = new ...
总的来说,Java原生序列化和反序列化是Java开发中常用的技术,用于持久化对象状态和在网络间传输对象。通过实现`Serializable`接口并在需要的地方调用`ObjectOutputStream`和`ObjectInputStream`的相关方法,我们...
XML序列化是.NET框架中的一项重要技术,它允许我们将对象的状态转换为XML格式的字符串,以便存储或传输。在C#编程中,XML序列化是一个非常实用的功能,尤其是在数据交换、配置文件保存或者网络通信中。`PersonInfo...
在Java编程语言中,对象的存储与读取是常见的任务,尤其在持久化数据、序列化和网络传输等场景中。本教程将深入探讨如何在Java中实现对象的存储和读取,主要涉及以下几个关键知识点: 1. **对象序列化...
在Java中,序列化是通过实现`java.io.Serializable`接口来完成的。任何实现了这个接口的类的对象都可以被序列化。以下是一个简单的序列化和反序列化的示例: ```java import java.io.*; class MyClass implements ...
- Java:Java提供了`java.io.Serializable`接口,通过`javax.xml.bind.JAXB`库实现XML序列化。 - C#:C#的`.NET Framework`提供了`System.Xml.Serialization`命名空间,包含`XmlSerializer`类。 - Python:Python...