Só um detalhe. Uma variável de referência final não pode mudar o objeto para o qual aponta. Entretanto, pode-se mudar os valores desse objeto normalmente.
Por exemplo:
[code]public class Funcionario {
private String nome;
public String getNome() { return this.nome; }
public void setNome(String nome) { this.nome = nome; }
}
[/code]
Suponha que vc tem:
private final Funcionario f = new Funcionario();
Você pode fazer:
//Ok, está alterando um valor do objeto apontado por f.
f.setNome("Vinicius");
Mas não pode:
f = new Funcionario();
ou
f = null;
Não pode, está tentando alterar o local onde f aponta.