Je pose un doute que je suis tombé sur la lecture de Java efficace. Je m'excuse si c'est un vrai doute simple et simple. Donc, dans Point 74 - Mettre en œuvre Serializable Judicieusement Strong>, il dit que même après avoir mis en œuvre une bonne information qui se cache sur votre classe en utilisant des champs privés privés et privés privés, il est sujette à perdre de l'efficacité? Tout ce que j'ai lu dans le passé était, toute la sérialisation est, convertissez des objets en forme de flux d'octets et après la désérialisation, le même objet est retenu. Comment ça perd des données cachées dans ce processus? P>
3 Réponses :
Vous pouvez potentiellement avoir accès à la valeur de l'état interne d'un objet à l'aide de la sérialisation et de la désérialisation. P>
En sérialisant un objet, vous pourrez peut-être lire les valeurs des champs privés que vous ne devriez autrement pas. Inversement, si vous créez une matrice d'octete bien fabriquée que vous désérialisez dans une instance, vous pourrez peut-être l'initialiser dans un état illégal. P>
Hmmm
Eh bien, dans certains sens oui, mais si vous pensez que cela peut causer des problèmes, vous pouvez toujours remplacer la méthode ReadObject (), vérifier l'état vous-même et jeter une exception s'il viole une certaine contrainte. En ce qui concerne les valeurs d'accès, dans la plupart des cas pratiques, ce n'est pas un gros problème.
Cache de données Un problème de cachette avec Mais il existe également un autre aspect avec la sérialisation ci-dessous est le contenu d'une classe de haricots que j'ai sérialisé (en utilisant la technique par défaut). Je pourrais afficher le contenu en ouvrant le fichier sérialisé dans un éditeur de texte. P>
Vous pouvez maintenant trouver facilement ci-dessous des choses sans même savoir sur la classe: p>
Ces choses que vous pouvez remarquer à coup sûr; D'autres détails ne sont pas si clairs. Et ci-dessus les informations sont correctes. P> ¬í SR Serializationpractice1 I Agel extrat LJAVA / LANG / STRING; L nomQ ~ xp
pt sidkumarq ~ x code> p>
Je crois que la sérialisation a le potentiel d'exposer des données privées au monde extérieur. Et c'est là que l'externalisation (l'utilisation d'instances de type externalisable est très pratique). En mettant en œuvre la méthode WriteExternal de l'interface externalisable (...), le développeur a un contrôle total sur le processus de sérialisation plutôt que de s'appuyer complètement sur la mise en œuvre de la diffusion de la série par défaut. Vous trouverez ci-dessous le pseudo-code pour mon idée (je voudrais ignorer les signatures méthodes réelles car il n'est qu'un pseudo-code destiné à mettre à l'autre une idée plus large): en fait, pourquoi Just Cryptage, nous voudrons peut-être compresser les octets sérialisés à un magasin persistant si nous voulons dans certaines situations où l'instance à sérialiser est "gros". P> p>