摘于《JAVA2核心技术第1卷》p618 - p620。具体见代码:
package test.serializable;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
public class ObjectFileTest {
public static void main(String[] args){
Manager boss = new Manager("Carl Cracker",80000,1987,12,15);
boss.setBonus(5000);
Employee[] staff = new Employee[3];
staff[0] = boss;
staff[1] = new Employee("Harry Hacker",50000,1989,10,1);
staff[2] = new Employee("Tony Tester",40000,1990,3,15);
try{
ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream("employee.dat"));
out.writeObject(staff);
out.close();
ObjectInputStream in = new ObjectInputStream((new FileInputStream("employee.dat")));
Employee[] newStaff = (Employee[])in.readObject();
in.close();
for(Employee e : newStaff)
System.out.println(e);
}catch(Exception e){
e.printStackTrace();
}
}
}
package test.serializable;
import java.io.Serializable;
import java.util.Date;
import java.util.GregorianCalendar;
public class Employee implements Serializable{
private String name;
private double salary;
private Date hireDay;
public Employee() {}
public Employee(String n,double s,int year,int month,int day) {
name = n;
salary = s;
GregorianCalendar calendar = new GregorianCalendar(year,month - 1,day);
hireDay = calendar.getTime();
}
public String getName() {
return name;
}
public double getSalary() {
return salary;
}
public Date getHireDay() {
return hireDay;
}
public void raiseSalary(double byPercent){
double raise = salary * byPercent / 100;
salary += raise;
}
@Override
public String toString(){
return this.getClass().getName()
+ "[name=" + name
+ ",salary=" + salary
+ ",hireDay=" + hireDay
+ "]";
}
}
package test.serializable;
public class Manager extends Employee{
private double bonus;
public Manager(String n,double s,int year,int month,int day) {
super(n,s,year,month,day);
bonus = 0;
}
@Override
public double getSalary(){
double baseSalary = super.getSalary();
return baseSalary + bonus;
}
public void setBonus(double bonus) {
this.bonus = bonus;
}
public String toString(){
return super.toString()
+ "[bonus=" + bonus
+"]";
}
}
分享到:
相关推荐
Java对象的序列化和反序列化是Java编程中一项重要的技术,主要用于将对象的状态转换为字节流,以便存储或在网络上传输。这一过程对于理解Java的IO操作、持久化数据以及实现分布式通信等场景非常关键。 首先,我们来...
当两个Java进程需要通过网络通信时,由于网络只支持二进制数据的传输,因此需要将Java对象转换为字节流,然后在接收方再将字节流还原为原来的对象,这个过程就是反序列化。 Java提供了一套标准的序列化API,包括`...
标题“文件流序列化”指的是使用Delphi中的文件流进行对象序列化的技术。文件流是TStream接口的一个具体实现,用于与磁盘上的文件进行交互。这种技术在数据持久化、网络通信以及跨进程通信等场景中十分常见。 ...
序列化是将对象转换为可存储或传输的形式,如字节流或文本,而反序列化则是将这些形式恢复为原始对象。C#中的`System.Runtime.Serialization`命名空间提供了多种序列化工具,如`DataContractSerializer`、`...
### Java对象序列化标准知识点详解 #### 一、系统架构概览 **1.1 概览** Java 对象序列化是一种将Java对象的状态转换成字节流的过程,以便于在网络上传输或存储到磁盘上。Java序列化标准定义了一套规则来描述如何...
1. **概念**:反序列化是将已序列化的字节流恢复为原来的Java对象的过程。 2. **过程**:通过`ObjectInputStream`的`readObject()`方法,可以将字节流还原为与原始对象等效的新对象。 3. **安全问题**:反序列化过程...
对象序列化和反序列化流
- **定义**:二进制序列化是一种快速且高效的序列化方式,它可以将对象转换成二进制流存储在文件中或在网络中传输。 - **实现类**:`BinaryFormatter`类,位于`System.Runtime.Serialization.Formatters.Binary`...
序列化是将一个对象转换为字节流的过程,而反序列化则是将字节流还原为原来的对象。这两个过程在许多场景下都非常有用,比如在网络传输、存储到磁盘或数据库、以及实现跨进程通信时。 首先,我们需要了解`...
比如,我们可以先序列化对象,然后将得到的序列化数据通过压缩流进行压缩,再写入到文件或发送到网络。在接收端,首先解压缩接收到的数据,然后再进行反序列化,还原出原来的对象。 下面是一个简单的示例,展示如何...
1. **定义**: Java对象序列化是将Java对象转换为字节流的过程,以便可以存储在磁盘上或在网络上传输。它允许我们将对象的状态保存下来,即使程序关闭,下次启动时也能恢复到之前的状态。 2. **接口**: 实现序列化的...
简单来说序列化就是一种用来处理对象流的机制,所谓对象流也就是将对象的内容进行流化,流的概念这里不用多说(就是I/O),我们可以对流化后的对象进行读写操作,也可将流化后的对象传输于网络之间(注:要想将对象...
Java对象序列化是Java平台的一项重要特性,它允许将对象的状态转换为字节流,以便存储、传输或恢复。在本文中,我们将深入探讨关于Java对象序列化你可能不知道的五件事情,这些知识点对于理解和优化你的Java应用程序...
在描述中提到,`Student`对象包含了图片,这种情况下二进制序列化可以高效地处理图像数据,因为它是原始字节流。 2. **SOAP序列化(SOAP Serialization)** SOAP序列化将对象转换为符合SOAP标准的XML消息,适合于...
5. **对象流**:ObjectInputStream和ObjectOutputStream用于对象的序列化和反序列化,详细阐述了如何实现Serializable接口以及序列化过程中的注意事项。 6. **序列化详解**:解释了如何实现序列化接口,序列化和反...
Java对象序列化是一种将Java对象转换为字节流的过程,以便可以存储这些对象或通过网络进行传输。这个过程是Java平台的核心特性,它允许开发者将复杂的对象结构持久化或者在网络间进行安全通信。序列化不仅可以用于...
Java对象序列化是一种将Java对象转换为字节流的过程,以便可以存储在磁盘上、在网络上传输或在任何其他需要持久化数据的场景中使用。这个过程涉及到两个主要概念:序列化(Marshalling)和反序列化(Unmarshalling)...
Java对象序列化是一种将对象转换为字节流的过程,以便可以将其存储在磁盘上,或者在网络中进行传输。这是Java平台提供的一种功能,允许程序员将任何Java对象持久化,即将其状态保存到磁盘,或者在网络中进行传输。...