La respuesta corta es, uno se puede topar con algunos objetos candidatos y en realidad tratar de serializarlos usando el mecanismo de tu elección. La prueba aquí es que no se encuentran errores durante el marshalling/unmarshalling, y que el objeto resultante "rehidratado" es igual al original.
Alternativamente, si no tiene ningún objeto candidato, podría implementar una prueba basada en la reflexión que introspeccione los campos (no estáticos, no transitorios) de su clase para asegurarse de que también sean serializables. Hablando desde la experiencia, esto se vuelve sorprendentemente complejo sorprendentemente rápido, pero se puede hacer en una medida razonable.
La desventaja de este último enfoque es que si un campo es, por ejemplo, List<String>
, entonces puede fallar la clase por no tener un campo estrictamente serializable, o simplemente asumir que se utilizará una implementación serializable de List. Ninguno de los dos es perfecto.(Tenga en cuenta que el último problema existe también para ejemplos: si cada ejemplo utilizado en la prueba utiliza listas serializables, no hay nada que impida que una versión no serializable sea utilizada por algún otro código en la práctica).
¿Está tratando de probar para ver si el objeto g ¿Están serializados y deserializados adecuadamente? –
sí. (.........) –