사용자 도구

사이트 도구


java:serialization

차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

양쪽 이전 판 이전 판
다음 판 양쪽 다음 판
java:serialization [2014/06/13 05:17]
kwon37xi [serialVersionUID 읽기]
java:serialization [2022/11/09 11:20]
kwon37xi [Java Serialization 직렬화]
줄 1: 줄 1:
 ====== Java Serialization 직렬화 ====== ====== Java Serialization 직렬화 ======
   * Serializable interface 구현   * Serializable interface 구현
 +
 +====== Serializable 하지 않은 필드가 중간에 껴 있다면 ======
 +  * ''Serializable'' 한 클래스에 non Serializable 필드가 껴 있다면 
 +  * 이 상황에서 Java 의 직렬화 기능을 사용하면 [[https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/Serializable.html|NotSerializableException]] 이 발생하게 된다.
 +
 +
 +<code java>
 +@Test
 +@DisplayName("serialize : ")
 +void serialize() throws IOException, ClassNotFoundException {
 +
 +
 +    Person person = new Person("나야나", new Age(41));
 +    System.out.println("직접 생성 객체 : " + person);
 +    try (ByteArrayOutputStream bos = new ByteArrayOutputStream()) {
 +        try ( ObjectOutputStream oos = new ObjectOutputStream(bos)) {
 +            oos.writeObject(person);
 +        }
 +
 +        try (ObjectInputStream ois = new ObjectInputStream(new ByteArrayInputStream(bos.toByteArray()))) {
 +            final Person deserializedPerson = (Person) ois.readObject();
 +            System.out.println("역직렬화 객체 : " + deserializedPerson);
 +        }
 +    }
 +}
 +
 +@AllArgsConstructor
 +@Getter
 +@Setter
 +@ToString
 +public static class Person implements Serializable {
 +    private String name;
 +    private Age age;
 +}
 +
 +
 +@AllArgsConstructor
 +@Getter
 +@Setter
 +@ToString
 +public static class Age {
 +    private int age;
 +}
 +</code>
 +
  
 ===== serialVersionUID 읽기 ===== ===== serialVersionUID 읽기 =====
java/serialization.txt · 마지막으로 수정됨: 2022/11/29 16:17 저자 kwon37xi