메모리에 있는 개체를 하드 디스크에 쓰는 것은 직렬화이며, 이는 출력 데이터가 일반 텍스트가 아닌 개체라는 점을 제외하면 일반 출력과 다르지 않습니다.
메모리에 데이터를 저장하는 것은 일시적이기 때문에 객체를 장기간 저장해야 할 경우 객체를 하드 디스크에 기록해야 하므로 직렬화가 발생합니다. .
객체가 직렬화되려면 해당 객체가 속한 클래스가 직렬화 가능 인터페이스를 구현해야 합니다. 이 인터페이스는 필드와 추상 메소드가 없는 상징적인 인터페이스입니다. 이 인터페이스는 클래스에 직렬화된 버전 번호를 할당합니다.
4. 객체가 직렬화되고, 개인형 변수를 포함한 객체의 전역 변수가 하드 디스크에 기록됩니다.
정적 필드는 직렬화할 수 없습니다. 정적 변수의 값은 직렬화 중에 설정된 값이 아니라 현재 JVM의 값입니다.
transient에 의해 수정된 필드는 직렬화할 수 없습니다.
OutputStream ops=new FileOuptStream(path); ObjectOuptStream oos=new ObjectOutputStream(ops); Object obj=new Ojbect(); oos.writeObject(obj);
2. 역직렬화 작업 요구 사항
3. 직렬화 버전 번호
⑵ 직렬화된 버전 번호는 엔터티 클래스의 버전을 표시하는 데 사용됩니다. 엔터티 클래스가 수정되면 직렬화된 버전 번호를 명시적으로 지정하지 않으면 시스템에서 자동으로 새 버전 번호를 생성하므로 두 버전이 숫자가 달라서 직렬화할 수 없습니다.
일반적으로 직렬화 버전 번호는 직렬화해야 하는 엔터티 클래스에 명시적으로 설정됩니다.⑶ 다시 컴파일하지 않아도 반드시 새로운 일련화된 버전 번호가 생성되는 것은 아닙니다. 엔터티 클래스가 변경될 때만 새로운 일련화된 버전 번호가 생성됩니다.
⑷파싱 프로세스먼저 직렬화된 파일의 직렬화된 버전 번호와 클래스 파일이 동일한지 비교합니다. 동일하다면 직렬화된 파일이 현재
⑸ 역순 연산:
InputStream is=new FileInputStream(path); ObjectInputStream ois=new ObjectIputStream(is); Object obj=ois.readObject();
위 내용은 직렬화란 무엇입니까? 직렬화에 대한 자세한 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!