사용자 도구

사이트 도구


java:serialization

차이

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

차이 보기로 링크

양쪽 이전 판 이전 판
다음 판
이전 판
java:serialization [2014/06/13 05:17]
kwon37xi [serialVersionUID 읽기]
java:serialization [2022/11/29 16:17] (현재)
kwon37xi
줄 1: 줄 1:
 ====== Java Serialization 직렬화 ====== ====== Java Serialization 직렬화 ======
   * Serializable interface 구현   * Serializable interface 구현
 +  * 참조 : [[:serialization|Serialization 데이터 직렬화]]
  
 +===== 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>
 +
 +결과
 +<code>
 +serialtest.SerializationTest$Age
 +java.io.NotSerializableException: serialtest.SerializationTest$Age
 + at java.base/java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1185)
 +</code>
 ===== serialVersionUID 읽기 ===== ===== serialVersionUID 읽기 =====
   * [[http://www.tutorialspoint.com/java/io/objectstreamclass_getserialversionuid.htm|Java.io.ObjectStreamClass.getSerialVersionUID()]]<code java>   * [[http://www.tutorialspoint.com/java/io/objectstreamclass_getserialversionuid.htm|Java.io.ObjectStreamClass.getSerialVersionUID()]]<code java>
java/serialization.1402604222.txt.gz · 마지막으로 수정됨: 2014/06/13 05:17 저자 kwon37xi