Рассмотрим достаточно сложную тему.
Сериализация — процесс преобразования объекта в поток байтов.
Десериализация — процесс преобразования потока байтов в объект.

Чтобы класс можно было сериализировать необходимо сделать использовать интерфейс Serializable. Данный интерфейс не имеет методов, поэтому в самом классе не нужны никакие методы.
Рассмотрим пример:

public class Stud implements Serializable {
	
	private static final long serialVersionUID = 1L;
	private String name;
	private int age;

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}
	
}

Что такое

private static final long serialVersionUID = 1L;

Т.к. при сериализации объекта учитывается порядок полей в классе, значит если изменить порядок полей или добавить/удалить новое поле, то поток байтов будет серьёзно отличаться от новой структуры класса. Поэтому данную строчку необходимо добавлять данную строчку для сериализации.

Для сериализации необходимо использовать метод writeObject у класса ObjectOutputStream.
Для десериализации необходимо использовать readObject у класса ObjectInputStream

Рассмотрим класс Seria :

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;

public class Seria {
	public boolean seria(Object o, String fileName) throws Exception {

		File f = new File(fileName);
		ObjectOutputStream oos = null;

		try {
			FileOutputStream fos = new FileOutputStream(f);
			oos = new ObjectOutputStream(fos);
			oos.writeObject(o);
		} catch (FileNotFoundException e) {
			//TODO
		}

		return true;
	}

	public Object des(String file) throws Exception {
		File fr = new File(file);

		ObjectInputStream istream = null;
		try {
			FileInputStream fis = new FileInputStream(fr);
			istream = new ObjectInputStream(fis);
			// десериализация
			return (Object) istream.readObject();
			
		} catch (FileNotFoundException e) {
			//TODO
		}
		return null;
	}
}

И соответственно проверим, что все работает:

public class Mainn {
	public static void main(String[] agrs) throws Exception {
		Stud s = new Stud();
		s.setName("Ivan");
		s.setAge(14);
		
		
		Seria sr = new Seria();
		sr.seria(s, "C://111.txt");
		
		Stud desStud = (Stud) sr.des("C://111.txt");
		System.out.println(desStud.getName());
		System.out.println(desStud.getAge());
	}
}

вывод на консоль:
Ivan
14

Реклама