Por que GETs e SETs em Java?
Este post é para tentar ajudar aqueles que ainda têm dúvidas sobre os famosos métodos GET e SET em Java!
Muito bem, por que GET e SET?
Para quem não sabe, GET e SET são métodos que acabaram por tornar-se “padrões” de acesso a atributos private. Por exemplo, se tenho um atributo chamado “nome” do tipo String em modo private, criam-se 2 métodos: um para alterar o valor deste atributo (SET) e outro para se obter o valor deste atributo (GET). Veja o exemplo:
private int numero;
public void setNumero(int numero){
this.numero = numero;
}
public int getNumero(){
return this.numero;
}
Mas muitos alunos ainda me questionam a necessidade dos métodos GET e GET, ou mesmo, qual a diferença entre criar um atributo “private” com acesso por meio destes métodos e um atributo “public“?
Esta é uma questão interessante e polêmica, mas vamos por partes. Criar métodos GET e SET (também conhecidos como getters e setters) é necessário por vários motivos, e vou listar alguns deles.
1. Possibilidade de você criar rotinas de validação na atribuição (seu Setter seria um procedimento que pode sinalizar com exceções um valor inválido). Olhe este exemplo (que verifica se o número atribuído é zero e lança uma exceção caso seja).
public void setNumero(int numero){
if (numero ==0)
throw new RuntimeException(“Numero invalido”);
else
this.numero = numero;
}
2. Possibilidade de você criar um atributo que é acessível, mas não modificável (read-only), ou seja, você tem um atributo que só tem SET e não tem SET (a modificação do valor do atributo ficaria a cargo de um método de cálculo, por exemplo)
3. A necessidade de utilizar um framework externo. Se você utiliza frameworks, tais como hibernate, JAX (RS ou WS), Spring, Struts, você NECESSITA de métodos GET e SET, pois os frameworks partem da premissa que seus atributos serão acessíveis por meio desses métodos.
O assunto GET e SET é extenso e muito importante. Estas ferramentas são extremamente poderosas e quando você, programador, sabe o que está fazendo. Getters e Setters estão além de “botão direito -> inserir código -> gerar Gets e Sets -> selecionar tudo -> Ok”
#vamosprogramar!!