“… mas o que significa ter uma variável final de referência a objeto? Uma variável de referencia marcada como final nunca poderá ser reatribuída para referenciar um objeto diferente. Os dados do objeto, no entendo, poderão ser alterados, mas a variável de referência não. Em outras palavras, você pode usar uma variável de referência final e alterar o objeto atribuido a ela, mas não pode alterar a variável de referência para fazê-la referenciar um objeto dirente. Memorize isso: não ha objetos finais, somente referências finais.”
Realmente não intendi, o que isso quer dizer na prática?? Alguem tem algum código de exemplo?
Ou seja, depois de declarado uma variável de referência para objeto como final, você pode modificar o conteúdo do objeto, porém não pode modificar a referência para outro objeto.
Java_Vinicius_Machin
Quer dizer mais ou menos isso aqui (ilustrando novamente aquilo que o Rafael Nunes afirmou acima):
classSuaClasse{privateintid;SuaClasse(intid){super();this.id=id;}publicintgetId(){returnid;}publicvoidsetId(intnovoId){id=novoId;}publicStringtoString(){return"Id= "+id;}}publicclassTeste{publicstaticvoidmain(Stringargs[]){finalSuaClassesc=newSuaClasse(10);sc.setId(20);//isso é válido, alterar o objeto sem alterar a referencia//ou seja referenciar outro objeto. Isso porque o padrões de bits da //referencia não pode ser alterado uma vez que ele tenha sido inicializadosc=newSuaClasse(5);//isso não é válido, pois viola o padrões de bits//da referenciaSuaClassesc2=newSuaClasse(1);sc=sc2;//isso também não (claro!!!)}}
Erros:
[b]Teste.java:32: cannot assign a value to final variable sc
sc = new SuaClasse(5); //isso não é válido, pois viola os padrões de bits
^
Teste.java:35: cannot assign a value to final variable sc
sc = sc2; //isso também não (claro!!!)
^
[/b] :XD: Joinha agora?
agodinho
Tem um livro muito bom que cobre bem esse assunto,
dá uma olhada em Hardcore Java, 2004 - O´Really.