La parola chiave final ha un significato differente a seconda del contesto in cui si utilizza
Essa si può riferire a:
Può indicare che la variabile dichiarata è una costante a tempo di compilazione e può essere pertanto sostituita nel bytecode per ottimizzare l’esecuzione
Oppure indica che quella variabile una volta inizializzata a run-time non può più cambiare
Una variabile sia static che final corrisponde ad una unica locazione di memoria comune a tutti gli oggetti che non può essere cambiata
Un riferimento ad un oggetto dichiarato final:
Sono variabili final non inizializzate in occasione della dichiarazione
Devono essere inizializzate nel costruttire o nel blocco in cui sono dichiarate
Una volta inizializzate, non possono essere modificate