문서의 선택한 두 판 사이의 차이를 보여줍니다.
| 양쪽 이전 판 이전 판 다음 판 | 이전 판 | ||
|
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 구현 | ||
| + | * 참조 : [[: | ||
| + | ===== 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:// | ||