2009-10-08 24 views
19

¿Por qué la clase Swing JComponent implementa la interfaz Serializable? La forma en que implementé mis vistas, son sin estado, todos los datos de estado se almacenan en un modelo de presentación. Entonces no necesito serializar mis puntos de vista. He utilizado una anotación @SuppressWarnings("serial") para eliminar las advertencias. ¿Hay mejores formas de eliminarlos?Componentes de giro y serialización

+4

* Forma * demasiadas partes de la API de Java implementan Serializable. Personalmente, a menos que estuviera escribiendo un código que hiciera uso de la serialización, simplemente desactivaría las advertencias de serialización en mi compilación/IDE. –

Respuesta

15

Al principio, los constructores de GUI iban a guardar la interfaz de usuario en formato serializado. La etiqueta applet incluso tiene un atributo para cargar desde un formulario serializado (no conozco a nadie más que haya usado eso, y solo lo he usado para ser malicioso). Lamentablemente, utilizar el mecanismo de serialización para GUI realmente no funciona. Swing solo garantiza la compatibilidad dentro de la misma versión principal (y supongo que incluso tiene pocas pruebas).

3

¿Por qué la clase Swing JComponent implementa la interfaz Serializable?

Aunque esto le permite serializar clases y enviarlas desde y hacia el cliente y el servidor, esto no parece ser un escenario intuitivo. Hay una mejor posibilidad, aún delgada, de que alguien quiera serializar componentes en un archivo. Esto permitirá ese tipo de serialización.

¿Hay mejores formas de eliminar [las advertencias]?

Puede crear una instancia del serialVersionUID, pero si lo hace, deberá mantenerlo cuando cambie de clase. Esto parece excesivo. Otra opción, como señala Laurence Gonsalves en su comentario, es suprimir por completo las advertencias en el campo Preferencias-> Java-> Compilador-> Errores/Advertencias-> Posibles problemas de programación.