Conceito de variáveis marcadas com final

Pessoal,

Estou com dúvida no conceito de variáveis final. Quando se trata de primitivos, eu entendo que uma variável marcada com final não poderá ter seu valor nunca alterado, a partir do momento que recebe um determinado valor. Mas estudando para a certificação, encontrei a seguinte pergunta: “O que significa ter uma variável de referência à objeto final?”. Eles até explicam no livro, mas com a explicação deles não consegui entender. Alguém pode dar um help??

Obrigada desde já!!

final Animal g1 = new Animal();

Não podera mais passar a referencia de Animal (g1) para ferenciar nenhum outro obejto

g1 = new Animal(); // inválido 

Obrigada pelo exemplo! Ficou bem mais fácil de entender!!