Java enthält viele Klassen (wie in Swing), die die dreaded and error proneinterface Serializable
implementieren.Was ist ein guter Weg, um eine Klasse unserialisierbar zu machen?
Wenn Sie implementieren, sagen wir, ein neues TableModel
von AbstractTableModel
erstreckt, das neue Modell serializable sein muss, aber was, wenn es interne Datentypen enthält, die nicht serialisierbar sind und die müssen nicht sein, da Sie nicht planen Sie um diese Funktion trotzdem zu nutzen? In diesem Fall werden Werkzeuge wie Sonar verrückt. Die entweder beschweren, dass "Klasse Foo
Nicht-transiente nicht serialisierbare Instanz Feld bar
definiert".
Also mache ich das Feld transient
nur um „Das Feld Foo.bar
vergänglich ist, aber nicht durch Deserialisierung gesetzt“
Ist es möglich, zu sagen: „Nein, diese Klasse nicht serialisierbar ist, und I don‘ Ich will, dass es so ist, dass Sie keine Fehler in Werkzeugen wie Sonar bekommen?
Does Sonar Unterstützung Unterdrückung einer Warnung für eine einzelne Klasse? In IntelliJ gibt es die Möglichkeit, der Klasse für diese Prüfung ein @SuppressWarning hinzuzufügen. –
Sonar führt nur FindBugs, PMD und CheckStyle auf Ihrem Code aus und aggregiert die Ergebnisse. Eine Lösung, die diese drei ruhig hält, würde für mich funktionieren. '@ SuppressWarning' funktioniert wie erwartet. Es gibt auch Plugins, die es erlauben, Warnungen durch Dinge wie Dateiname, Pfad oder Stringmuster zu ignorieren. –
Ist das nicht, wofür 'transient' ist? – EJP