Ist es im Allgemeinen eine bewährte Methode, einfache POJO-Java-Klassen java.io.Serializable zu implementieren?Ist die Implementierung von java.io.Serializable selbst in einfachen POJO-Java-Klassen eine bewährte Methode?
Antwort
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.
Nur wenn Sie in der Lage sein müssen, sie zu serialisieren. Es ist not worth the effort sonst.
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.
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.
- 1. Selbst-Implementierung von einfachen LinkedList in Java
- 2. Verwenden von Enum für Factory in Java, eine bewährte Methode?
- 3. Ist dies eine bewährte Methode für eine benutzerdefinierte Ausnahme?
- 4. Ist !! eine bewährte Methode, um einen Truthy-Wert zu überprüfen
- 5. Implementierung eines einfachen Kalenders
- 6. Bewährte Methode zum Speichern temporärer Daten für eine Webanwendung
- 7. Bewährte Methode zum Speichern eines konstanten Datenstroms
- 8. Was ist die bevorzugte Methode zur Implementierung von hashCode()?
- 9. Bewährte Methode zur Bereitstellung von EntityManager in OSGI-Anwendungen
- 10. Wirklich bewährte Methode, IBOutlet-Ansichtselemente beizubehalten?
- 11. Bewährte Verfahren zum Protokollieren von Echtzeitdaten in eine NoSQL-DB
- 12. React.js bewährte Methode zum Abhören von Fensterereignissen von Komponenten
- 13. Die Implementierung der Methode bis() in FluentWait
- 14. Warum ist eine Methode nicht identisch mit sich selbst?
- 15. Parse Fehler in einfachen Haskell Fibonacci-Implementierung
- 16. Docker bauen ist sehr langsam, selbst mit einfachen Befehlen
- 17. Wie eine partielle Methode ohne eine Implementierung
- 18. Bewährte Methode zur Verwendung von Zeichenfolgedaten aus einer Datei
- 19. Was ist, wenn eine Methode nicht selbst verwendet?
- 20. REST Security Design bewährte Methode beim Aussetzen von Ressourcen ID
- 21. Implementierung von Factory-Methode in verwandten Klassenhierarchien
- 22. Javassist NotFoundException wenn immer java.io.Serializable mit JDK9
- 23. Bewährte Methode zum Speichern von CurrentUser nach dem Anmelden
- 24. Bewährte Methode für die Verarbeitung von Nachrichten mit mehreren Threads in JMS-Warteschlangen
- 25. Bewährte Methode, um Konfigurations-/Benutzerinformationen in .NET-App beizubehalten
- 26. Bewährte Methode zur Überprüfung der Null- und Leersammlung in Java
- 27. Eine Methode zum Erstellen von einfachen Spiel GUI
- 28. Was ist eine einfache Implementierung von asyncwaterfall?
- 29. Bewährte Methode zum Erstellen von Objekten, die in for/foreach-Schleifen verwendet werden
- 30. Was ist die Motivation der Implementierung von C# ExpressionVisitor?