Dwie zalety, które widzę, są wymienione:
1 Oznaczanie argumentu metody jako ostatecznego zapobiega ponownemu przypisaniu argumentu wewnątrz metody
Z twojego przykładu
public String changeTimezone(final Timestamp stamp, final Timezone fTz,
final Timezone toTz){
fTz = Calendar.getInstance().getTimeZone();
return ..
}
W skomplikowanej metodzie oznaczanie argumentów jako ostatecznych pomoże w przypadkowej interpretacji tych argumentów jako metod zmiennych lokalnych, a ponowne przypisanie ich jako kompilatora będzie oznaczać te przypadki, jak pokazano w przykładzie.
2 Przekazanie argumentu do anonimowej klasy wewnętrznej
Ponieważ formalny parametr metody jest zmienną lokalną, dostęp do nich można uzyskać z wewnętrznych klas anonimowych tylko wtedy, gdy są zadeklarowane jako końcowe.