2010-06-17 5 views

risposta

23

Sia Serializable e IsSerializable lavoro, secondo la GWT serialization docs: Una classe definita dall'utente

è serializzabile se tutte le seguenti condizioni:

  1. È assegnabile IsSerializable o Serializable, sia perché implementa direttamente una di queste interfacce o perché deriva da una superclasse che fa
  2. Tutti i campi di istanza non-finali, non transitori sono anch'essi serializzabili e
  3. A partire da GWT 1.5, deve avere un costruttore predefinito (argomento zero) (con qualsiasi modificatore di accesso) o nessun costruttore.

Una differenza chiave è però che, per motivi di sicurezza, tutte le Serializable classi devono essere inclusi in una politica di serializzazione, che è generato in fase di compilazione, mentre IsSerializable classi non hanno questo requisito.

Se il tuo interesse è puramente in GWT e non lo sei ad es. condividi le classi del tuo modello tra l'applicazione web e un'altra applicazione, ti suggerisco di implementare le tue classi modello/DTOs IsSerializable.

+0

Noob domanda straniera qui. Cosa intendi per "campi di istanze non transitori"? – Jla

+0

@DrDro: campi non contrassegnati con il modificatore 'transient'. –

+0

La necessità di una politica di serializzazione presenta alcuni inconvenienti pratici, ad es. richiede un tempo di elaborazione aggiuntivo, ...? –

6

Se condividete i vostri oggetti con altri programmi quindi utilizzare Serializable in quanto è una funzione di libreria Java Standard,

Ma se volete solo passare tra il server e il client in GWT quindi utilizzare IsSerializable. Ti aiuta a essere sicuro di non essere in grado di iniziare a passarlo a luoghi che non dovrebbe andare.