직렬화는 객체의 상태 정보를 저장하거나 전송할 수있는 형태로 변환하는 프로세스입니다. 일반적으로 물체는 보관소 또는 인용 버퍼와 같은 저장 매체에 저장됩니다. 네트워크 전송 중에 바이트 또는 XML과 같은 형식 일 수 있습니다. 바이트 또는 XML 인코딩 형식은 완전히 동일한 객체를 복원 할 수 있습니다. 이 반대 과정을 사 제화 라고도합니다.
Java 객체의 직렬화 및 사제화 <br /> Java에서는 여러 가지 방법으로 객체를 만들 수 있으며 객체가 재활용되지 않는 한 객체를 재사용 할 수 있습니다. 그러나 우리가 만든 Java 객체는 JVM의 힙 메모리에 모두 존재합니다. 이러한 객체는 JVM이 실행 중일 때만 존재할 수 있습니다. JVM이 실행을 중지하면이 객체의 상태가 손실됩니다.
그러나 실제 응용 프로그램 시나리오에서는 이러한 객체를 지속하고 필요할 때 객체를 다시 읽을 수 있어야합니다. Java Object Serialization 은이 기능을 구현하는 데 도움이 될 수 있습니다.
객체 직렬화 메커니즘은 Java 언어로 된 객체 지속성 방법입니다. 객체 직렬화를 통해 객체의 상태는 바이트 배열로 저장 될 수 있으며,이 바이트 배열은 필요할 때 사막화를 통해 물체로 변환 될 수 있습니다. 객체 직렬화는 JVM에서 활성 객체와 바이트 어레이 (스트림) 사이에서 쉽게 변환 할 수 있습니다.
Java에서는 객체의 직렬화 및 사제화가 RMI (원격 메소드 호출) 및 네트워크 전송에 널리 사용됩니다.
관련 인터페이스와 Java 클래스는 개발자가 Java 객체를 직렬화하고 조작 할 수 있도록하기 위해 편리한 API를 지원합니다. 여기에는 다음 인터페이스 및 클래스가 포함됩니다.
이 클래스는 java.io.serializable 인터페이스를 구현하여 직렬화 기능을 가능하게합니다. 이 인터페이스를 구현하지 않는 클래스는 해당 주 중 어느 곳에서나 직렬화하거나 사형화 할 수 없습니다. 직렬화 가능한 클래스의 모든 하위 유형은 그 자체로 직렬화 가능합니다. 직렬화 인터페이스에는 방법이나 필드가 없으며 직렬화 가능한 의미를 식별하는 데만 사용됩니다. (이 인터페이스에는 메소드와 필드가 없으므로 인터페이스를 구현하는 클래스의 객체 만 왜 직렬화 될 수 있습니까?)
객체를 직렬화하려고 할 때, 객체가 발생하면 직렬화 가능한 인터페이스를 지원하지 않습니다. 이 경우, 수신 가능한 예고가 발생합니다.
직렬화 될 클래스에 상위 클래스가 있고 부모 클래스에 정의 된 변수를 동시에 유지하려면 부모 클래스는 java.io.serializable 인터페이스를 통합해야합니다.
다음은 java.io.serializable 인터페이스를 구현하는 클래스입니다
package com.hollischaung.serialization.serializablemos; import java.io.serializable;/*** 16/2/17에서 Hollis가 생성했습니다.*Serializable Interface 구현*/public class user1은 Serializable {private int age; public string getname (thish void setname; name;} public int getage () {return age;} public void setage (int age) {this.age = age;}@repirdepublic string toString () {return "user {" + "name = '" + name +'/'' + ", age =" + age + '}';}} 다음 코드를 통한 직렬화 및 사막화
packet com.hollischaung.serialization.serializabledemos; import org.apache.commons.io.fileutils; import org.apache.commons.io.ioutils; import java.io. Serialized*/public class serializabledemo1 {public static void main (string [] args) {// Objectuser1 user = new user1 (); user.setname ( "hollis"); user.setage (23); system.out.println (user); // fileObjectStream oos = nulelstrestam oos = null; null; null; null; null; fileOutputStream ( "tempile")); oos.writeObject (user);} catch (ioException e) {e.printstacktrace ();} findefile file = new istopile (ebovile ")에서 obj를 읽으십시오. fileInputStream (file)); user1 newUser = (user1) ois.readobject (); system.out.println (newuser);} catch (ioexception e) {e.printstacktrace ();} catch (classfoundExcept e) {e.printstacktrace (); {fileutils.forcedelete (file);} catch (ioexception e) {e.printstacktrace ();}}}} // output : // user {name = 'hollis', age = 23} // user {name = 'hollis', age = 23}위는이 기사에 관한 것입니다. 모든 사람이 Java에서 객체 직렬화 및 사막화를 배우는 것이 도움이되기를 바랍니다.