Comme vous le décrivez, @Override crée une vérification à la compilation qu'une méthode est substituée. Ceci est très utile pour s'assurer que vous n'avez pas un problème de signature stupide lorsque vous essayez de contourner.
Par exemple, j'ai vu l'erreur suivante:
public class Foo {
private String id;
public boolean equals(Foo f) { return id.equals(f.id);}
}
Cette classe compile comme il est écrit, mais en ajoutant l'étiquette @Override à la méthode equals provoquera une erreur de compilation car elle ne remplace pas la méthode equals sur l'objet. Ceci est une erreur simple, mais il peut échapper à l'œil même d'un développeur chevronné
J'ai également reçu une réponse détaillée dans http://stackoverflow.com/q/94361/697630 –