2010-06-17 5 views

Répondre

23

Les deux Serializable et IsSerializable travail, selon la GWT serialization docs:

Une classe définie par l'utilisateur est sérialisable si toutes les conditions suivantes sont réunies:

  1. Il est assignable à IsSerializable ou Serializable, soit car elle implémente directement l'une de ces interfaces ou parce qu'elle dérive d'une superclasse
  2. Tous les champs d'instance non-finals et non-transitoires sont eux-mêmes sérialisables, et
  3. À partir de GWT 1.5, il doit avoir un constructeur par défaut (zéro argument) (avec n'importe quel modificateur d'accès) ou aucun constructeur du tout.

Une différence essentielle est que si, pour des raisons de sécurité, toutes les classes Serializable doivent être inclus dans une politique de sérialisation, qui est généré au moment de la compilation, alors que IsSerializable classes ne sont pas à cette exigence.

Si votre intérêt est purement dans GWT, et vous n'avez pas par exemple. partagez vos classes de modèle entre l'application Web et une autre application, je vous suggère de mettre en œuvre vos classes de modèle/DTO IsSerializable.

+0

Noob question étrangère ici. Que voulez-vous dire par "champs d'instance non-transitoire"? – Jla

+0

@DrDro: champs non marqués avec le modificateur 'transitoire '. –

+0

La nécessité d'une politique de sérialisation présente-t-elle des inconvénients pratiques, par ex. nécessitant un temps de traitement supplémentaire, ...? –

6

Si vous partagez vos objets avec d'autres programmes utilisent ensuite Serializable comme il est une fonction standard de java,

Mais si vous voulez seulement passer entre le serveur et le client GWT puis utilisez IsSerializable. Il vous aide à vous assurer que vous ne permettez pas de le passer à des endroits qu'il ne devrait pas aller.