Recentemente vi algo parecido com o código abaixo e não intendi, se puderem me explicar agradeço :lol:
public void metodoQualquer(final Classe qualquer){
...................................
}
Desde já Muito Obrigado a todos
Recentemente vi algo parecido com o código abaixo e não intendi, se puderem me explicar agradeço :lol:
public void metodoQualquer(final Classe qualquer){
...................................
}
Desde já Muito Obrigado a todos
Só indica que o parâmetro qualquer não poderá ser alterado.
Ou seja, dentro do método você não pode fazer:
qualquer = new Classe();
Ou
qualquer = null;
Não que qualquer dessas coisas faça a menor diferença pq na prática, com ou sem final, fazer isso também não funciona (mas não dá erro).
Quando usado para uma variável, significa que ela não pode mais de uma atribuição. Isso garante que o mesmo objeto será referenciado por uma variável durante todo o trecho. Por exemplo:
final int i = 0;
i = 3; // isso não é permitido devido ao modificador final
Quanto usado em um método, indica que o mesmo não pode ser sobreescrito. Por exemplo:
class A {
@Override
public final String toString() {
return "A";
}
}
class B extends A {
@Override
public String toString() { // isso não é permitido devido ao modificador final
return "A";
}
}
mt bom, obrigado a todos 8)
[quote=ViniGodoy]Só indica que o parâmetro qualquer não poderá ser alterado.
Ou seja, dentro do método você não pode fazer:
qualquer = new Classe();
Ou
qualquer = null;
Não que qualquer dessas coisas faça a menor diferença pq na prática, com ou sem final, fazer isso também não funciona (mas não dá erro).[/quote]
Eu tb pensava assim, tecnicamente o valor do método chamador não pode ser alterado.
O problema é mais de estilo. Se vc alterar a variável , por exemplo , multiplando por 10, e mais à frente vc a usa, qual é o valor que o programador original está pensando que está ali?
O uso de final no argumento serve para proibir o reuso de variáveis e ajudar a impedir erros de codificação.
Claro que isso se resolve naturalmente pelo uso de uma nova variável (que é a boa prática melhor porque o novo valor agora tem um nome)