2010-12-03 8 views

Répondre

2

Cela peut-il se produire avec une nouvelle version de Java?

Si quelque chose peut arriver, cela :), mais sérieusement, s'ils le font changer le serialVersionUID, ils mettent en place pour être en arrière incompatible - Quelque chose qui n'a probablement pas eu lieu dans toutes ces années.

Toutes les incompatibilités sérialisables énumérées ci-dessus sont pour le 'défaut' serialVersionUID

1

Il pourrait mais c'est très improbable. La spécification de sérialisation d'objet Java définit l'algorithme exact pour la génération serialVersionUID (chapitre 4 - http://download.oracle.com/javase/6/docs/platform/serialization/spec/class.html#4100) et explique également comment fonctionne le contrôle de version de type et ce qui est considéré comme une évolution de type compatible (chapitre 5 - http://download.oracle.com/javase/6/docs/platform/serialization/spec/version.html).

Retour à votre question. Si une nouvelle version de Java introduit une modification incompatible avec la définition HashMap, elle sera accompagnée d'un nouvel UID de sérialisation. Java 5 a clairement montré combien la rétrocompatibilité signifie pour Java - regardez comment les types génériques sont venus avec l'effacement de type. Je pense que tu es parfaitement en sécurité. La pire chose qui puisse arriver est de voir le HashMap déprécié :) mais je suis sûr qu'il sera toujours compatible.

0

Vous n'êtes pas 'parfaitement sûr'. Cela est arrivé, dans le cas de l'une des implémentations de RowSet, et il n'est pas garanti que cela ne se produise pas pour l'intégralité de Swing.

Cependant, il reste fortement improbable pour les classes de base.