JavaBookStudy / JavaBook

책읽기 스터디
https://javabookstudy.github.io/
Apache License 2.0
19 stars 2 forks source link

[Effective Java] Item 85. HashSet 인스턴스를 역직렬화 #51

Closed taxol1203 closed 3 years ago

taxol1203 commented 3 years ago

역직렬화 : 직렬화된 파일 등을 역으로 직렬화하여 다시 객체의 형태로 만드는 것을 의미한다. 저장된 파일을 읽거나 전송된 스트림 데이터를 읽어 원래 객체의 형태로 복원한다.

라고 합니다.

452p의 3번째 줄에서

HashSet 인스턴스를 역직렬화 하려면 그 원소들의 해시코드를 계산해야 한다

라고 되어있는데, HashSet을 역 직렬화 한다는 것이 잘 이해가 되지 않습니다.

jth2747 commented 3 years ago

책의 bomb 코드에서는 각 객체가 직렬화되어 바이트 배열(byte [])에 들어가 있는데, 코드 내의 반복문에 의해 이 구조의 깊이가 100단계까지 깊어진다고 합니다. 이 상황에서 역직렬화를 하려면 반복문 내에 객체가 같은지 체크를 2번 하기에 HashCode 메서드를 2번 호출하고 이 수행을 100단계 모두 돌기 때문에 2^100번 넘게 HashCode가 호출된다는 것 같습니다.