2008-10-20 3 views

Antwort

13

Im Allgemeinen nicht. Joshua Bloch sagt zu implement Serializable judiciously. Eine Zusammenfassung der Nachteile, die er beschreibt:

  • verringert Flexibilität der andere Klasse Implementierung später - die serialisierte Form Teil der Klasse des API ist
  • einige Bugs und Sicherheitslücken wahrscheinlicher macht - kann ein Angreifer Klasse Interna Zugriff innerhalb der serialisierte Bytestrom
  • erhöht die Testlast - jetzt müssen Sie die Serialisierung testen!
  • belastet Autoren von Unterklassen - sie haben ihre Subklassen Serializable zu

Natürlich zu machen, manchmal braucht man ein POJO Serializable, sagen für RMI zu implementieren, aber wenn die Notwendigkeit nicht da ist, Ihr Code ohne sie einfacher und sicherer zu sein.

3

Es hängt mehr von den Bedürfnissen ab. Im Zusammenhang mit Web-Anwendungen machen es einige Webserver (z. B. Tomcat 6) sogar erforderlich, die Klassen, deren Objekte wir in Sitzungen speichern, zu serialisieren.

0

Eine Sache, die ich getan habe, um die Tatsache zu adressieren, dass die serialisierte Form nicht abwärtskompatibel ist (zB beim dynamischen Laden einer Klasse auf einem laufenden System), lädt die Felder, die ich speichern möchte, in eine Hashmap und serialisiert diese . Auf diese Weise kann ich die Daten immer deserialisieren, auch wenn Felder fehlen. Möglicherweise müssen Sie Standardwerte für fehlende Schlüssel angeben, aber es ist besser, als die Feldreihenfolge zu verfälschen.

Verwandte Themen