Perché java utilizza un'annotazione @Override, invece di un modificatore?

19

Quali sono stati i motivi per cui java utilizzava l'annotazione @Override , invece di creare un nuovo modificatore override ?

@Override
public String toString() {
   return "";
}

vs.

public override String toString() {
   return "";
}
    
posta jwa 05.08.2016 - 09:33
fonte

2 risposte

21

@Override non era originariamente nella lingua. Quando si sentiva la necessità di aggiungerlo, era più facile usare un meccanismo generico (annotazioni) piuttosto che aggiungere una nuova parola chiave alla lingua. L'aggiunta di una nuova parola chiave è sempre una modifica incompatibile poiché può interrompere i programmi che utilizzano tali parole come identificatore.

Nelle lingue che aggiungono un marcatore override fin dal primo giorno, è abbastanza spesso una parola chiave (esempi sono Kotlin e Scala), in Java si trattava di rimanere indietro-compatibile con la vecchia versione di Java che non aveva alcun override marcatore.

    
risposta data 05.08.2016 - 11:07
fonte
13

Non hai bisogno della @ annotazione Override per effettivamente comportamento di override; È un'annotazione perché aggiunge semplicemente del contesto l'intento del metodo per il compilatore, non cambiando il metodo stesso.

Senza l'annotazione, puoi intendere per sovrascrivere le funzionalità, ma per errore non riescono a farlo (utilizzando una firma leggermente diversa). L'aggiunta dell'annotazione indica al compilatore di generare un errore se questo metodo non è effettivamente un comportamento dominante.

In quanto tale, ha perfettamente senso come annotazione.

    
risposta data 05.08.2016 - 16:20
fonte

Leggi altre domande sui tag