What is java serialization? When is serialization required?

Serialization: the process of converting Java objects into byte streams.

Deserialization: the process of converting a byte stream to a Java object.

 

Java objects need to be serialized when they need to be transferred on the network or stored in a file for persistence.

Implementation of serialization: the class implements the Serializable interface, which has no methods to implement. The Serializable interface is implemented to tell the jvm that objects of this class can be serialized.

 

matters needing attention:

  • If a class can be serialized, its subclasses can also be serialized
  • Member variables declared as static and transient cannot be serialized. Static member variables are attributes that describe the class level, and transient represents temporary data
  • Deserialization read the serialized objects in the same order

 

Specific use

package constxiong.interview;
 
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
 
/**
 * Test serialization, deserialization
 * @author ConstXiong
 * @date 2019-06-17 09:31:22
 */
public class TestSerializable implements Serializable {
 
	private static final long serialVersionUID = 5887391604554532906L;
	
	private int id;
	
	private String name;
 
	public TestSerializable(int id, String name) {
		this.id = id;
		this.name = name;
	}
	
	@Override
	public String toString() {
		return "TestSerializable [id=" + id + ", name=" + name + "]";
	}
 
	@SuppressWarnings("resource")
	public static void main(String[] args) throws IOException, ClassNotFoundException {
		//serialize
		ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("TestSerializable.obj"));
		oos.writeObject("Test serialization");
		oos.writeObject(618);
		TestSerializable test = new TestSerializable(1, "ConstXiong");
		oos.writeObject(test);
		
		//De serialization
		ObjectInputStream ois = new ObjectInputStream(new FileInputStream("TestSerializable.obj"));
		System.out.println((String)ois.readObject());
		System.out.println((Integer)ois.readObject());
		System.out.println((TestSerializable)ois.readObject());
	}
 
}

Print results:

Test serialization
618
TestSerializable [id=1, name=ConstXiong]


 

 

All resources are summarized in the public address.



 

Tags: Programming Java network jvm

Posted on Sun, 10 Nov 2019 10:07:23 -0500 by dirkadirka