Home  >  Article  >  Java  >  Serialization and deserialization of java objects

Serialization and deserialization of java objects

高洛峰
高洛峰Original
2017-01-18 11:29:211289browse

The example of this article shares the serialization and deserialization of java objects for your reference. The specific content is as follows

1. What is serialization
Convert the object into a byte stream and save it , such as saving it to a file and restoring the object later. This mechanism is called object serialization. (Additional sentence: Saving objects to a permanent storage device is called persistence)

2. How to implement serialization
You need to implement the Serializable interface. If the java object implements this interface, it means that the object of this class is is serializable.

3. Notes on serialization

(1) When an object is serialized, only the non-static member variables of the object can be saved, but methods and static member variables cannot be saved.
(2) Object A refers to object B, object A is serialized, and B is also serialized.
(3) If a serializable object contains a reference to a non-serializable object, then the entire serialization operation will fail, and a NotSerializableException will be thrown if it fails. Therefore, both the object itself and the reference object must implement the Serializable interface. Can be serialized.
(4) When using transient, if the member variable or reference is marked as transient, the object can still be serialized, but it will not be serialized into the file.

4. Code

public class Person implements Serializable { 
  
 private String name; 
 private transient int age; 
   
 public Person(String name, int age) { 
  super(); 
  this.name = name; 
  this.age = age; 
 } 
  
 public String toString() { 
  return this.name + "-" + this.age; 
 } 
}
public class SerializableClient { 
  
 public static void main(String[] args) throws Exception { 
  Person p1 = new Person("zhangsan", 5); 
  Person p2 = new Person("lisi", 100); 
    
  //序列化 
  FileOutputStream fos = new FileOutputStream("person.txt"); 
  ObjectOutputStream oos = new ObjectOutputStream(fos); 
    
  oos.writeObject(p1); 
  oos.writeObject(p2); 
    
  System.out.println("---------"); 
    
  //反序列化 
  FileInputStream fis = new FileInputStream("person.txt"); 
  ObjectInputStream ois = new ObjectInputStream(fis); 
    
  for(int i = 0; i < 2; i++) { 
   Person tempPerson = (Person)ois.readObject(); 
   System.out.println(tempPerson); 
  } 
 } 
}

Output result:
---------
zhangsan-0
lisi-0
5. More detailed Granular control of serialization and deserialization

Serialization and deserialization of java objects

## When we implement the above two private methods in the serialization or deserialization class (the method declaration must be the same as the above remain completely consistent), then it allows us to control the serialization and deserialization process in a lower-level and more granular way.

The above is the entire content of this article. I hope it will be helpful to everyone's learning, and I also hope that everyone will subscribe to the PHP Chinese website.

For more articles related to serialization and deserialization of java objects, please pay attention to the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn