Erstens können Sie eine Klasse nicht mit @Override
annotieren. Diese Annotation zeigt an, dass eine Methodendeklaration eine Methodendeklaration in einer Superklasse überschreiben soll.
Sie müssen die überschreibenden Methoden nicht mit Anmerkungen versehen, aber wenn Sie diese Annotation verwenden und Ihre annotierte Methode eine Superklassenmethode nicht überschreibt, erzeugt der Compiler einen Fehler Nachricht.
Gibt an, dass eine Methodendeklaration eine Methodendeklaration in einer Oberklasse überschreiben soll. Wenn eine Methode mit diesem Annotationstyp kommentiert wird, aber keine Superklassenmethode überschreibt, müssen Compiler eine Fehlermeldung generieren.
Der Fall, den ich gerne erklären möchte, ist, wenn equals
überschrieben wird.
Dies ist ein Fehler, weil equals
einen Parameter Object
erwartet:
Das beste Beispiel - überschreiben equals()
.
Wenn Sie eine Klasse wie folgt schreiben:
%Vor% Dann haben Sie die Methode equals überladen , anstatt Object.equals
wie vorgesehen zu überschreiben.
Wenn Sie die Methode equals mit @Override
kommentieren, gibt der Compiler Ihnen einen Fehler, der (richtigerweise) angibt, dass Sie eine Superklassenmethode nicht überschrieben haben.
In Java 6 können Sie dies auch zum Implementieren von Schnittstellenmethoden verwenden - das ist praktisch, wenn Sie Ihrer Klasse nur eine Methode hinzufügen, um bestimmte Schnittstellen zu erfüllen, und daher der Compiler prüfen kann, ob dies erforderlich ist, und Sie auf diese hinweist Schnittstellenänderung.
Wie bei allen Anmerkungen ist es effektiv ein programmatischer Kommentar, aber in diesen Fällen ist es sehr praktisch, dass der Compiler überprüft, ob Ihre Annahmen (noch) korrekt sind.
Es ist da, um auszudrücken, dass Sie erwarten, dass die Methode eine Superklassenmethode außer Kraft setzt. Es ist nützlich, wenn Sie einen Fehler machen, indem Sie den Methodennamen eingeben oder ihm die falschen Parameter geben, damit er nicht das überschreibt, was Sie für außer Kraft gesetzt hielten.