La palabra clave final le impide asignar un nuevo valor al parámetro. Me gustaría explicar esto con un ejemplo simple.
Supongamos que tenemos un método
Método 1(){
Date dateOfBirth = nueva fecha ("1/1/2009");
método2 (fecha de nacimiento);
method3 (dateOfBirth); }
public mehod2 (Date dateOfBirth) {
....
....
....
}
public mehod2 (Date dateOfBirth) {
....
....
....
}
En el caso anterior, si se asigna un nuevo valor a "dateOfBirth" en el método2, esto daría como resultado una salida incorrecta del método3. Como el valor que se pasa al método3 no es el que era antes de pasar al método2. Entonces, para evitar esta palabra clave final, se usa para parámetros.
Y esta es también una de las mejores prácticas de codificación de Java.