2008-10-20 2 views

답변

13

일반적으로 없습니다. 조슈아 블로흐가 implement Serializable judiciously에게 말했습니다. 그가 설명 단점의 요약 :

  • 나중에 변경 클래스 구현의 유연성을 감소 - 공격자는 내 클래스 내부에 액세스 할 수 있습니다 - 직렬화 된 형식이
  • 은 가능성이 몇 가지 버그 및 보안 구멍을 만드는 클래스의 API의 일부입니다 직렬화 된 바이트 스트림
  • 증가하는 테스트 부담 - 이제 직렬화를 테스트해야합니다!
  • 는 서브 클래스의 저자 부담 - 그들은 자신의 서브 클래스가 직렬화 가능하게 너무

은 물론, 때때로 당신은, RMI 말할하지만, 필요가없는 경우, 코드는 것이다 직렬화 구현하는 POJO를 필요로해야 그것이 없으면 더 간단하고 안전하게 될 수 있습니다.

4

당신이 그들을 serialize 할 수 있어야하는 경우에만. 그렇지 않으면 not worth the effort입니다.

3

필요에 따라 다릅니다. 웹 응용 프로그램의 컨텍스트에서 일부 웹 서버 (예 : Tomcat 6)는 세션에 객체를 저장하는 클래스를 직렬화해야하는 경우도 있습니다.

0

직렬화 된 양식이 이전 버전과 호환되지 않는다는 사실 (즉, 실행중인 시스템에서 클래스를 동적으로 다시로드 할 때)이 해시 맵에 저장하려는 필드를로드 한 다음이를 직렬화한다는 사실 . 이렇게하면 필드가 누락 된 경우에도 데이터에서 항상 비 직렬화 할 수 있습니다. 누락 된 키의 기본값을 제공해야하지만 필드 순서를 어지럽히는 것보다 낫습니다.

관련 문제