>  기사  >  Java  >  Java 객체의 직렬화 및 역직렬화

Java 객체의 직렬화 및 역직렬화

高洛峰
高洛峰원래의
2017-01-18 11:29:211265검색

본 글의 예시에서는 참고용으로 자바 객체의 직렬화와 역직렬화를 공유하고 있습니다.

1. 직렬화란 무엇인가요
객체를 바이트 스트림으로 변환하여 저장합니다. , 예를 들어 파일에 저장하고 나중에 객체를 복원하는 등의 메커니즘을 객체 직렬화라고 합니다. (추가 문장: 영구 저장 장치에 객체를 저장하는 것을 지속성이라고 합니다)

2. 직렬화 구현 방법
Java 객체가 이 인터페이스를 구현한다는 의미입니다. 이 클래스는 직렬화 가능합니다.

3. 직렬화 관련 주의사항

(1) 객체가 직렬화되면 해당 객체의 비정적 멤버변수만 저장할 수 있고, 메소드와 정적 멤버변수는 저장할 수 없다. 구원받다.
(2) 객체 A는 객체 B를 참조하고, 객체 A는 직렬화되고, B도 직렬화됩니다.
(3) 직렬화 가능 객체에 직렬화 가능하지 않은 객체에 대한 참조가 포함되어 있으면 전체 직렬화 작업이 실패하고, 실패하면 NotSerializedException이 발생합니다. 따라서 객체 자체와 참조 객체 모두 구현해야 합니다. 직렬화 가능 인터페이스.
(4) 임시를 사용하여 멤버 변수 또는 참조가 임시로 표시되면 객체는 계속 직렬화될 수 있지만 파일로 직렬화되지는 않습니다.

4. 코드

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); 
  } 
 } 
}

출력 결과:
---------
zhangsan-0
lisi-0
5. 직렬화 및 역직렬화의 세분화된 제어

Java 객체의 직렬화 및 역직렬화

직렬화 또는 역직렬화 클래스에서 위의 두 가지 전용 메서드를 구현할 때(메서드 선언은 위와 동일해야 하며 완전히 일관성을 유지해야 함) , 그러면 직렬화 및 역직렬화 프로세스를 더 낮은 수준에서 더 세부적인 방식으로 제어할 수 있습니다.

위 내용은 이 글의 전체 내용입니다. 모든 분들의 학습에 도움이 되길 바라며, PHP 중국어 사이트도 구독해 주시길 바랍니다.

Java 객체의 직렬화 및 역직렬화와 관련된 더 많은 기사를 보려면 PHP 중국어 웹사이트를 주목하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.