Object
또는 Data
를 외부의 자바 시스템에서도 사용할 수 있도록 byte 형태로 데이터를 변환하는 기술java.io.Serializable
인터페이스를 상속받은 객체는 직렬화 할 수 있다.Object
또는 Data
로 변환하는 기술java.io.ObjectOutputStream을 사용하여 직렬화 진행
public static void main(String[] args){ Member member = new Member("Cheese", 20); byte[] serializeMember; try(ByeArrayOutputStream baos = new ByteArrayOutputStream()){ try(ObjectOutputStream oos = new ObjectOutputStream(baos)){ oos.writeObject(member); // serializedMember == 직렬화된 member 객체 serializedMember = baos.toByteArray(); } } // byte 배열로 생성된 직렬화 데이터를 base64로 변환 System.out.println(Base64.getEncoder().encodeToString(serializedMember)); }
private static final long serialVersionUID = 1L;
java.io.ObjectInputStream을 사용하여 역직렬화 진행
public static void main(String[] args){ String base64Member = "..."; byte[] serializedMember = Base64.getDecoder().decode(base64Member); try(ByteArrayInputStream bais = new ByteArrayInputStream(serializedMember)){ try(ObjecInputStream ois = new ObjectInputStream(bais)){ // 역직렬화된 member 객체 읽기 Object objectMember = ois.readObject(); Member member = (Member)objectMember; System.out.println(member); } } }