우리 수석님께서 예제를 주시며 직렬화 해보라는 미션과 직렬화에 대한 질문을 하셨다......T^T


사실 직렬화를 해본적이 없어서 설명하기가 상당히 난해했다.

교육기관이나 책같은걸 보면 객체 자체를 파일에 쓰고.. 다시 역직렬화해서 읽어오는 예제가 많다.


그래서 직렬화라는게 그게 다인줄 알았다...- -;


사실 난 모르는게 너무 많고 어설픈 개발일을 하고 있다보니 이런 고급 기술을 쓸 기회가 없어서 나중에 진짜 개발자가 되었을때 써먹기 위해 포스팅 해본다..


이런 Person 클래스가 있고, 


이것을 직렬화 하려면 이런식으로 한다.


보통 예제들은 파일에 쓰고 다시 파일을 읽어다가 객체로 만드는데 여기선 그냥 잠깐 Byte배열로 저장했다가 다시 그 바이트를 읽어다가 객체로 만들었다.

암튼, 이게 일반적으로 알고있는 직렬화 라는거였다. (이건 나도 해봤어!)

물론, TestCase도 통과했다.


다음으로 Person객체에 몇가지 메서드를 정의해본다.


다시 테스트 실행을 해보면,

두둥!! 방금 Person객체에 정의한 메서드들이 위와 같은 순서로 실행됬다. 물론 테스트는 실패했을꺼다~

정확한 설명은 어렵지만 직렬화를 할때 JVM이 저런 메서드를 잡아서(?) 실행하는것 같다.......

후킹 메서드라 해야할까.. (용어 지식도 딸림....)


아무튼 이중에 writeObjectreadObject를 사용해서 테스트를 통과시키려면... 자알~ 구현을 해야한다..


이런식으로 구현할수 있고, 사실 위 예제는 불필요하게 구현을 하지 않아도 되잖아?!

좀 더 복잡한 객체, 혹은 어떠한 제약조건이 있을시에 언젠가 분명 사용할 날이 올것이다.


다음편....

'Java' 카테고리의 다른 글

decompile..  (0) 2015.11.10
ConcurrentModificationException  (0) 2012.11.08
Serializable, 직렬화 (2)  (0) 2012.08.30

+ Recent posts