2008-10-20 18 views

Respuesta

13

Generalmente no. Joshua Bloch dice al implement Serializable judiciously. Un resumen de los inconvenientes que se describen:

  • disminuye la flexibilidad de cambiar implementación de la clase después - la forma serializada es parte de la API de la clase
  • hace algunos errores y agujeros de seguridad más probable - un atacante puede acceder a partes internas de clase dentro el flujo de bytes serializados
  • aumenta la carga de la prueba: ¡ahora debe probar la serialización!
  • cargas autores de subclases - tienen que hacer sus subclases Serializable demasiado

Por supuesto, a veces se necesita un POJO para implementar Serializable, digamos por RMI, pero si la necesidad no está allí, el código ser más simple y más seguro sin eso.

3

Depende más de las necesidades. En el contexto de las aplicaciones web, algunos servidores web (por ejemplo, Tomcat 6) incluso obligan a serializar las clases cuyos objetos almacenamos en sesiones.

0

Una cosa que he hecho para abordar el hecho de que el formulario serializado no es retrocompatible (digamos cuando recargo dinámicamente una clase en un sistema en ejecución), carga los campos que quiero guardar en un hashmap y luego serializa eso . De esta forma, siempre puedo deserializar los datos, incluso si faltan campos. Es posible que deba proporcionar los valores predeterminados para las claves que faltan, pero es mejor que desordenar el orden de los campos.

Cuestiones relacionadas