serobjectdemo.java

来自「java入门经典教程 java入门经典教程 java入门经典教程」· Java 代码 · 共 49 行

JAVA
49
字号
// 例5.5.7 SerObjectDemo.java
import java.io.*;
public class SerObjectDemo
{
	public static void main(String[] args)
	{
		Employee employee = new Employee("David", 1);
		Manager manager = new Manager("Lisa", 3);
		
		manager.setSecretary(employee);
		
		Employee[] staff = new Employee[2];
		staff[0] = employee;
		staff[1] = manager;
		
		System.out.println("对象被序列化之前的状态...");
		for (int i = 0; i < staff.length; i++)
		    System.out.println(staff[i]);

		try
{
			// 将Employee类和Manager类的对象写到文件中
			ObjectOutputStream out = new ObjectOutputStream(
				new FileOutputStream("employee.dat"));
			out.writeObject(staff); 
			out.close();
			
			// 将Employee类和Manager类的对象从文件中读出
            ObjectInputStream in = new ObjectInputStream(
				new FileInputStream("employee.dat"));
            Employee[] newStaff = (Employee[])in.readObject(); //将数组对象读出
            in.close();
			
			System.out.println("\n反序列化之后的对象状态...");
			for (int i = 0; i < newStaff.length; i++)
				System.out.println(newStaff[i]);

            // 通过harry对象来加薪将在secretary上反映出来
            newStaff[0].raiseSalary(10); // 对harry对象加薪
			System.out.println("\n对读出的Employee类对象David进行加薪后所有对象所发生的变化...");
			for (int i = 0; i < newStaff.length; i++)
				System.out.println(newStaff[i]);
		}
		catch (Exception e){
			e.printStackTrace();
		}
	}
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?