una - Java: dovrei aggiungere un'annotazione @ Override durante l'implementazione di metodi astratti?




modificatore abstract java (3)

In realtà, Joshua Bloch, nell'ultimo paragrafo di pagina 178 in Effective Java (2nd Ed.) , Dice che non è essenziale per i metodi delle classi concrete che sovrascrivono i metodi astratti per usare l'annotazione Override perché il compilatore darebbe comunque un errore. Tuttavia, "non è dannoso farlo".

Consiglierei di scegliere una strategia e di attenervisi coerentemente.

https://code.i-harness.com

Quando si sostituisce un metodo non virtuale in Java, si consiglia di utilizzare l'annotazione @Override, ma cosa succede se implemento un metodo astratto? Dovrei usare anche @Override?


Sì, ancora una volta dice al compilatore: "Voglio davvero scavalcare un metodo qui: se non c'è un metodo corrispondente per scavalcare, ho commesso un errore e voglio essere informato a riguardo!"

Personalmente penso che sia un peccato che questa sia solo un'annotazione piuttosto che una parte del linguaggio (come lo è in C #), ma questo è il vantaggio del senno di poi, naturalmente.


In questo caso, preferisco l'uso di @Override , in modo che il metodo venga contrassegnato nelle sottoclassi se la superclasse cambia (o rimuovendo del tutto il metodo o modificando la sua firma, ecc.).

L'unica vera differenza è che senza l'annotazione, se il metodo nella superclasse / interfaccia viene modificato o rimosso, l'implementazione in questione diventa semplicemente un metodo "normale" di quella classe. Pertanto dovresti aggiungere l'annotazione se stai implementando il metodo esclusivamente per soddisfare il contratto; e probabilmente non dovresti aggiungerlo se il metodo ha senso nella tua classe, indipendentemente dalle interfacce implementate o dai metodi astratti ereditati.





override