J'ai une classe Java qui implémente sérialisable et je suppose que la variable au sein de la classe serait également sérialisée mais SonarQube se plaint de ne pas l'être.
Mon extrait de code est illustré ci-dessous:
SonarQube a marqué cette ligne comme une erreur, car Java.util.List n'implémente pas Java.io.Serializable . Java.util.ArrayList est sérialisable, mais le bondAxeMarkQuoteUpdates
est protected
pour que quelqu'un puisse lui assigner une autre liste non sérialisable (par exemple dans une sous-classe).
Pour résoudre le problème, vous pouvez:
transient
, mais il sera ignoré lors de la sérialisationprivate
, afin que SonarQube puisse vérifier que personne ne lui a attribué de liste non sérialisableJe reçois la même erreur et la solution était de transformer la classe utilisée sur la variable en Serializable
.
Par exemple, cela affiche une erreur car Object
n'est pas Serializable
:
private Map<String, Object> map = new HashMap<>();
La solution la plus simple dans ce cas était d'activer le deuxième paramètre Serializable
. Vous pouvez donc utiliser:
private Map<String, Serializable> map = new HashMap<>();
Si vous utilisez votre propre classe (au lieu de Object
), vous pouvez mettre la classe sur implements Serializable
.