문서의 선택한 두 판 사이의 차이를 보여줍니다.
양쪽 이전 판 이전 판 다음 판 | 이전 판 다음 판 양쪽 다음 판 | ||
java:serialization [2014/06/13 05:17] kwon37xi [serialVersionUID 읽기] |
java:serialization [2022/11/09 11:20] kwon37xi [Serializable 하지 않은 필드가 중간에 껴 있다면] |
||
---|---|---|---|
줄 2: | 줄 2: | ||
* Serializable interface 구현 | * Serializable interface 구현 | ||
+ | ====== Serializable 하지 않은 필드가 중간에 껴 있다면 ====== | ||
+ | * '' | ||
+ | * 이 상황에서 Java 의 직렬화 기능을 사용하면 [[https:// | ||
+ | |||
+ | |||
+ | <code java> | ||
+ | @Test | ||
+ | @DisplayName(" | ||
+ | void serialize() throws IOException, | ||
+ | |||
+ | |||
+ | Person person = new Person(" | ||
+ | System.out.println(" | ||
+ | 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(" | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | |||
+ | @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; | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | 결과 | ||
+ | < | ||
+ | serialtest.SerializationTest$Age | ||
+ | java.io.NotSerializableException: | ||
+ | at java.base/ | ||
+ | </ | ||
===== serialVersionUID 읽기 ===== | ===== serialVersionUID 읽기 ===== | ||
* [[http:// | * [[http:// |