Galera, quando colocamos no parametro de um método “final” quais ganhos podemos ter, alem de garatir claro que aquele valor não poderá ser modificado dentro do método?
ex:
public metodo(final Integer parametro){
...
}
te mais.
Galera, quando colocamos no parametro de um método “final” quais ganhos podemos ter, alem de garatir claro que aquele valor não poderá ser modificado dentro do método?
ex:
public metodo(final Integer parametro){
...
}
te mais.
cara essa de vantagem é muito relativo,depende da regra de negocio de cada um,final so q dizer q é uma constante ou seja o valor nao muda,esse parametro ai deve receber algo q fique fora do objeto(statico)como uma referencia por exemplo !!!
[quote=afamorim]Galera, quando colocamos no parâmetro de um método “final” quais ganhos podemos ter, além de garantir claro que aquele valor não poderá ser modificado dentro do método?
ex:
public void metodo(final Integer parametro){
...
}
te mais.[/quote]
A vantagem é que isso costuma eliminar alguns erros de lógica que costumamos cometer em programas, do tipo:
public void metodo(final String x){
x = "teste"; // erro de compilação
}
...
String q = "bla ble bli";
var.metodo (q);
System.out.println (q); // deve ser impresso "bla ble bli", não "teste".
Eu perguntei para um gerente de projetos que forçou os seus programadores a usar sempre final, e ele disse que isso eliminou uma série de erros estúpidos e tolos que os programadores faziam (do tipo “reaproveitar variáveis” ou “achar que os métodos podiam modificar os seus parâmetros por referência”).
Thingol, se me permite, vou fazer uma correção:
[code]public class A{
public void metodo(String x){ x= “teste” ; }
public static void main (String []xxx){
String q = “vatapa”;
A a = new A();
a.metodo(q);
System.out.println(q);
}
}[/code]
Ainda imprime vatapa.
Sim senhor, mas é mais fácil forçar aquele programador meia-boca a botar “final” em todos os parâmetros que fazer entrar na cabeça que:
Pondo “final” em todos os parâmetros evitamos ter de fazer o tal programador meia-boca a entender esses profundos conceitos da vida (sendo que eles não conseguem distinguir a mão esquerda da direita )
no exemplo citado, por si so Integer e String sao classes com o modificador final.
E a ideia tb de ter o uso do modificador final dentro do metodo cai no assunto de classe interna… que vc pode usar a variavel… e uma variavel no argumento ela é local… e variaveis locais so podem receber o modificador final além dele mais nenhum :D.
Valeu galera, estava até lendo a matéria sobre Programação a prova de balas da Java Magazine desse mês e fala sobre isso, descobri que até método pode ser final, coisa que não lembrava mais, evitando assim que uma classe filha sobrescreva um método e evitando assim muitos problemas.
Realmente muito bom, só queria confirmar se teria ganho de performance, tipo não alocar mais memória que o necessário para um atributo.
Mais acho que não, é questão de segurança no código mesmo.
valeu ai todo mundo!!