Gostaria de saber se existe uma convenção ou boa pratica de usar final em todos os atriutos da minha classe? Se sim Por que?
public class request{
private final String cpf;
private final String rg;
}
`
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
Gostaria de saber se existe uma convenção ou boa pratica de usar final em todos os atriutos da minha classe? Se sim Por que?
public class request{
private final String cpf;
private final String rg;
}
`
Vamos lá...
Luis vou tentar responder sua pergunta abordando algumas coisas. Desde já peço desculpas se eu for repetitivo e falar alguma coisa que já seja óbvio pra você.
Java nos permite duas maneiras de criar uma variável e atribuir um valor a ela.
Utilizando a palavra reservada final ficaria assim:
public class Exemplo {
final String NOME = "Luis";
final long tempo;
Exemplo() {
this.tempo = System.currentTimeMillis();
}
}As duas formas vemos que quando marcamos uma variável como final, não podemos reatribuir seu valor.
Então quer dizer que variáveis finais são constantes?
Mais ou menos. Na realidade se o tipo da variável final for imutável sim, exemplos:
Agora se o tipo da variável for mutável podemos alterar seu estado através de métodos disponíveis, exemplo:
public class OutroExemplo {
private String nome;
OutroExemplo(String nome) {
this.nome = nome;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
}
public class Main {
final static OutroExemplo outroExemplo = new OutroExemplo("Luis");
public static void main(String[] args) {
System.out.println(outroExemplo.getNome());
outroExemplo.setNome("Alterando o valor");
System.out.println(outroExemplo.getNome());
}
}Agora que ficou claro o uso da palavra reservada final para variáveis (lembrando que pode ser usada a nível de classe e métodos) vamos as considerações:
Convenção ou boa prática: Se você pensar em imutabilidade talvez isso possa fazer sentido. Todavia entendo que uma "convenção" não seja o caso. Programação funcional é um bom exemplo de uso da imutabilidade.
Com relação a boa prática, ao meu ver não é o caso. Objetos tem ESTADO e COMPORTAMENTO.
Alterar o estado de um objeto após sua criação é bem viável em projetos de OO.
No mais pra mim é discussão de bar. Espero ter ajudado e me desculpe se prolonguei demais.