Java: Dois-je ajouter une annotation @Override lors de l'implémentation de méthodes abstraites?

StackOverflow https://stackoverflow.com/questions/1005898

  •  05-07-2019
  •  | 
  •  

Question

Lors du remplacement d'une méthode non virtuelle en Java, il est recommandé d'utiliser l'annotation @Override, mais que se passe-t-il si j'implémente une méthode abstraite? Dois-je utiliser @Override alors aussi?

Était-ce utile?

La solution

J'ai tendance à préférer utiliser @Override dans ce cas, afin que la méthode soit marquée dans les sous-classes si la superclasse change (soit en supprimant complètement la méthode, soit en modifiant sa signature, etc. ).

La seule différence réelle est que, sans l'annotation, si la méthode de la superclasse / interface est modifiée ou supprimée, la mise en oeuvre en question devient simplement une opération "normale". méthode de cette classe. Ainsi, vous devriez ajouter l'annotation si vous implémentez la méthode uniquement pour remplir le contrat; et vous ne devriez probablement pas l'ajouter si la méthode a du sens dans votre classe, quelles que soient les interfaces implémentées ou les méthodes abstraites héritées.

Autres conseils

Oui. Là encore, il indique au compilateur: "Je souhaite vraiment redéfinir une méthode ici. Si il n’existe pas de méthode correspondante à substituer, j’ai commis une erreur et je souhaite en être informé! "

Personnellement, je trouve dommage qu’il s’agisse simplement d’une annotation plutôt que d’une partie du langage (comme c’est le cas en C #), mais c’est bien sûr l’avantage du recul.

Oui. Cette pratique est recommandée par Joshua Bloch dans Effective Java.

En fait, Joshua Bloch, dans le dernier paragraphe de la page 178 de Effective Java (2 e éd.) , indique qu'il n'est pas essentiel que les méthodes de classes concrètes substituant des méthodes abstraites utilisent le Remplacez l'annotation car le compilateur donnerait quand même une erreur. Cependant, "il n'est pas dangereux de le faire".

Je vous conseillerais de choisir une stratégie et de vous y tenir constamment.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top