Se dice que el mecanismo de serialización predeterminado de Java no es muy eficiente porque a) descubre qué campos escribir/leer mediante reflexión, que suele ser lento b) escribe datos adicionales en la transmisión.Java: eficacia de writeObject vs writeExternal
Una forma de hacerlo más eficiente es implementar Externalizable y sus métodos writeExternal/readExternal.
Aquí está la pregunta: si en cambio proporciono los métodos 'writeObject/readObject' y no llamo a deafiltWriteObject/defaultReadObject en ellos, entonces este mecanismo no usará la reflexión para descubrir qué campos escribir/leer, más lo ganó No escriba datos adicionales para transmitir (¿o no? seguro). Entonces, desde una perspectiva de eficiencia, ¿está implementando writeObject/readObject mencionado arriba como implementación de Externalizable? ¿O la última opción ofrece algunos beneficios más prácticos que los anteriores no?
EDITAR: una diferencia, por supuesto, es cuando una clase Serializable que implementa readObject/writeObject está subclasificada, y si la subclase tiene su propio readObject/writeObject, no necesitan llamar a readObject/writeObject de super. No es así si la súper/subclase en su lugar implementa Externalizable. En este caso, es necesario llamar explícitamente a super's writeExternal/readExternal. Sin embargo, esta diferencia es irrelevante desde el punto de vista de la eficiencia.
¿Podría usted pl. explique esto un poco más: "Todavía hay un exceso de decisión al elegir qué clase/writeObject/readObject llamar a continuación". Además, 'readResolve' no es parte del contrato 'Externalizable', ¿verdad?Entonces estoy un poco confundido. – shrini1000
Tiene que determinar qué clase llamar readObject o readExternal a menos que también lo hagas tú mismo. readResolve es un método opcional que puedes usar también con Serailizable. Vea el primer enlace para más detalles. –
Thx. He usado readResolve, pero me confundí porque lo mencionaste en relación con Externalizable. Por cierto, leí tu artículo. Buena persona He hecho una pregunta allí. Sería genial si pudieras. respuesta. – shrini1000