一 介绍
1、对象的序列化,就是将Object转换成byte序列,反之叫对象的反序列化
2、序列化流(ObjectOutputStream),是过滤流。---writeObject
3、反序列化流(ObjectInputStream) ---readObject
4、序列化接口(Serializable)
对象必须实现序列化接口,才能进行序列化,否则将出现异常。
这个接口,没有任何方法,只是一个标准。
二 实例
1、需要序列化的类
package com.imooc.io;
import java.io.Serializable;
public class Student implements Serializable{
private String stuno;
private String stuname;
//该元素不会进行jvm默认的序列化,也可以自己完成这个元素的序列化
private transient int stuage;
public Student(String stuno, String stuname, int stuage) {
super();
this.stuno = stuno;
this.stuname = stuname;
this.stuage = stuage;
}
public String getStuno() {
return stuno;
}
public void setStuno(String stuno) {
this.stuno = stuno;
}
public String getStuname() {
return stuname;
}
public void setStuname(String stuname) {
this.stuname = stuname;
}
public int getStuage() {
return stuage;
}
public void setStuage(int stuage) {
this.stuage = stuage;
}
@Override
public String toString() {
return "Student [stuno=" + stuno + ", stuname=" + stuname + ", stuage="
+ stuage + "]";
}
private void writeObject(java.io.ObjectOutputStream s)
throws java.io.IOException{
s.defaultWriteObject();//把jvm能默认序列化的元素进行序列化操作
s.writeInt(stuage);//自己完成stuage的序列化
}
private void readObject(java.io.ObjectInputStream s)
throws java.io.IOException, ClassNotFoundException{
s.defaultReadObject();//把jvm能默认反序列化的元素进行反序列化操作
this.stuage = s.readInt();//自己完成stuage的反序列化操作
}
}
2、测试代码
package com.imooc.io;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
public class ObjectSeriaDemo1 {
public static void main(String[] args) throws Exception{
String file = "demo/obj.dat";
//1.对象的序列化
ObjectOutputStream oos = new ObjectOutputStream(
new FileOutputStream(file));
Student stu = new Student("10001", "张三", 20);
oos.writeObject(stu);
oos.flush();
oos.close();
ObjectInputStream ois = new ObjectInputStream(
new FileInputStream(file));
Student stu1 = (Student)ois.readObject();
System.out.println(stu1);
ois.close();
}
}
三 运行结果
Student [stuno=10001, stuname=张三, stuage=20]
相关推荐
1. 复杂类型的处理:除了基本类型外,还可以序列化和反序列化自定义类、结构体以及容器(如vector、map等)。对于自定义类型,通常需要重载`operator和`operator>>`,或者使用nlohmann/json库中的`to_json`和`from_...
Java对象的序列化和反序列化是Java编程中一项...总结,Java对象的序列化和反序列化是Java编程中的基础概念,它涉及到数据持久化、网络通信等多个方面。理解并熟练运用这一技术,能够帮助开发者更有效地管理和传递数据。
示例代码中`JsonHelper`类展示了如何通过`DataContractJsonSerializer`进行序列化和反序列化的操作。需要注意的是,这个类中的方法都使用了`using`语句来确保流资源得到释放,这是处理流时的良好实践,以避免资源...
实现序列化的基本步骤如下: 1. **创建文件输出流**:首先,需要创建一个`FileOutputStream`对象,用于指定序列化后数据的存储位置。 ```java FileOutputStream fs = new FileOutputStream("foo.ser"); ``` 2. *...
本文将详细探讨标题所提及的“hashtable序列化与反序列化”,并提供一个基本的示例。 首先,让我们理解什么是序列化。序列化是将对象的状态转换为可存储或可传输的形式的过程。在Java中,对象序列化允许我们将一个...
QDataStream提供了操作符和>>,可以方便地与Qt的各类基本类型以及自定义类型进行交互,完成数据的序列化和反序列化。 例如,在`mainwindow.cpp`中,我们可以创建一个QDataStream对象,并将其关联到一个QFile对象,...
`jackson-databind-2.2.3.jar` 包含了`ObjectMapper`类,它是Jackson库中最常用的类,负责执行序列化和反序列化操作。 2. **jackson-core**:这个模块是Jackson的基础,包含了JSON解析和生成的基本功能。`jackson-...
首先,让我们理解序列化的基本概念。序列化是将对象的状态转换为可存储或传输的形式的过程。在C#中,我们可以使用`System.Xml.Serialization`命名空间下的`XmlSerializer`类来实现XML序列化。这个过程可以将一个复杂...
### C#对象序列化与反序列化 #### 1. 对象序列化的介绍 ...以上介绍了C#中的序列化与反序列化的基本概念、不同序列化方式的特点以及如何控制序列化过程。这对于开发需要进行对象持久化或网络传输的应用非常有用。
序列化的基本概念** 序列化是指将对象的状态转化为可存储或可传输的形式,通常是二进制流或文本格式。这使得我们能够保存对象的状态并在稍后恢复,或者在网络中传输对象。在.NET中,System.SerializableAttribute...
1. **CObject类**:MFC的基础类,提供了序列化的基本支持。如果你的类直接或间接地继承自`CObject`,那么你的类就可以实现序列化。 2. **DECLARE_SERIAL宏**:在你的类定义中,使用`DECLARE_SERIAL`宏声明你的类...
- `java.io.Serializable` 是Java序列化的基础,任何类如果想要实现序列化,就必须实现这个接口。这个接口是一个标记接口,没有定义任何方法,只是表明该类的对象可以被序列化。 3. **序列化流程** - 使用 `java....
数组是数据结构的基础,序列化则是数据传输和持久化的关键技术。接下来,我们将深入探讨这两个主题。 **数组** 数组是C#中用于存储固定数量同类型元素的集合。它们提供了一种高效的方式去管理和操作大量数据。C#中...
首先,让我们了解序列化和反序列化的基本概念。**序列化**是将对象的状态转换为可存储或传输的形式的过程,通常是一个字节流。而**反序列化**则是相反的过程,将字节流恢复为原来的对象。在C#中,我们可以利用.NET...
本Demo将展示如何在Unity中集成并使用Protobuf进行数据的序列化和反序列化操作。 首先,你需要了解什么是序列化和反序列化。序列化是将对象的状态转换为可以存储或传输的数据格式的过程,而反序列化则是将这些数据...
在C#编程中,对象序列化和反序列化是至关重要的技术,它们允许开发者将复杂的对象状态转换为可存储或可传输的数据格式,如XML...以上就是关于C#对象序列化与反序列化的基本知识,以及如何在实践中应用这些概念的实例。
1. **序列化的基本概念**: 序列化是将对象转换为可以存储(如保存到硬盘)或在网络上传输的数据流的过程。在C#中,我们可以使用.NET Framework提供的System.Runtime.Serialization命名空间中的类来实现序列化。反...
虽然它的功能相对有限,但足以满足基础的序列化和反序列化需求。在`.net3.5可用自带方式.txt`文件中,可能详细介绍了如何使用这些内置方法来处理JSON数据。例如,你可以使用`JsonSerializer`类将.NET对象转换为JSON...
总的来说,序列化和反序列化是软件开发中的基础技能,理解和熟练掌握它们能够帮助我们更有效地处理数据,优化通信效率,以及提升系统的可扩展性和可维护性。在实际项目中,我们需要根据需求选择合适的序列化技术,并...
综上,Java对象序列化和反序列化是Java开发中的基础技能,它们在数据持久化、网络通信等方面发挥着关键作用。了解并掌握这些知识,能够帮助开发者更好地设计和实现各种功能。在实际应用中,需要注意安全性和版本兼容...