Quelles étaient les motivations de Java pour utiliser l' @Override
annotation, au lieu de créer un nouveau override
modificateur?
@Override
public String toString() {
return "";
}
contre.
public override String toString() {
return "";
}
Quelles étaient les motivations de Java pour utiliser l' @Override
annotation, au lieu de créer un nouveau override
modificateur?
@Override
public String toString() {
return "";
}
contre.
public override String toString() {
return "";
}
Réponses:
@Override n'était pas à l'origine dans la langue. Lorsque le besoin s'est fait sentir de l'ajouter, il était plus facile d'utiliser un mécanisme générique (annotations) que d'ajouter un nouveau mot-clé à la langue. L'ajout d'un nouveau mot-clé est toujours un changement incompatible car il peut casser des programmes qui utilisent ces mots comme identifiant.
Dans les langues qui ajoutent un marqueur de remplacement dès le premier jour, il s'agit assez souvent d'un mot-clé (des exemples sont Kotlin et Scala), en Java, il s'agissait de rester rétrocompatible avec l'ancienne version de Java qui n'avait pas de marqueur de remplacement.
default
était déjà un mot-clé réservé (utilisé dans les instructions switch) - ils viennent d'en ajouter une nouvelle utilisation. Il y a aussi quelques mots clés qui ne font rien pour l'instant mais qui sont réservés pour une utilisation future (const, goto) - voir JLS §3.9
enum
mot-clé qui a été ajouté romprait l'ancien code. Plus de mots clés de rupture ici: stackoverflow.com/questions/16506411
Vous n'avez pas besoin de l' annotation @Override pour remplacer réellement le comportement; C'est une annotation, car elle ajoute simplement un certain contexte de l'intention de la méthode pour le compilateur, sans changer la méthode elle-même.
Sans l'annotation, vous pouvez avoir l' intention de remplacer la fonctionnalité, mais échouez accidentellement (en utilisant une signature légèrement différente). L'ajout de l'annotation indique au compilateur de générer une erreur si cette méthode ne remplace pas réellement le comportement.
En tant que tel, il est parfaitement logique en tant qu'annotation.