Oie pessoal.
Por favor, será que alguém sabe me dizer a vantagem de se utilzar a cláusula this.
Obrigada.

Oie pessoal.
Por favor, será que alguém sabe me dizer a vantagem de se utilzar a cláusula this.
Obrigada.

Você usa THIS quando quer fazer referência a própria classe, e fica mais fácil de ler o seu código.
Ex:
class Numero{
private int num;
public void setNum(int num){
num += num;
}
public int getNum(){
return this.num;
}
public static void main(String[] args){
Numero n = new Numero();
n.setNum(2);
System.out.println(n.getNum());//Saída igual a 0
}
}
A saída acima é 0.
Se você fizer a alteração abaixo, a saída é 2.
public void setNum(int num){
//Agora está usando a variável de instância da classe.
this.num += num;
}
this serve para referenciar o próprio objeto, acessar atributos e métodos do próprio objeto sem ambiguidade.
Também é usado para fazer interfaces fluentes, onde modificamos atributos do objeto e retornamos ele próprio.
Exemplo:
DateTime amanhã = new DateTime().plusDays(1);
plusDays pode ter sido implementado como:
public DateTime plusDays(int diasASomar) {
this.diaDoMes += diasASomar;
this.moverData(); // para ir para o próximo mês, ou ano
return this;
}
Isso facilita para montar um código rápido e facil de ser entendido.
PS: DateTime existe e é parte do Joda Time
usualmente é utilizado quando há uma variável local ou um parametro com o mesmo nome de um dos campos.
Por exemplo
public class Classe{
int valor;
public void setValor( int valor ){
valor = valor;
}
}
neste exemplo o método setValor não funcionaria, porque estaria modificando o parametro e não o campo.
se fosse usado
this.valor = valor;
o código funcionaria corretamente.
o “this” é muito utilizado em construtores, alguns acreditam melhorar a visibilitade.
Exemplo:
Construtor ( int valor1, int valor2 ){
this.valor1 = valor1;
this.valor2 = valor2;
}
é muitas vezes utilizado ao invés de:
Construtor ( int valorInicial1, int valorInicial2 ){
valor1 = valorInicial1;
valor2 = valorInicial2;
}
o this pode ser utilizado também para referenciar o objeto de classe externa.
Exemplo:
class Externa{
int valor;
class Interna{
int valor;
void modificaValorInterno( int valor ){
this.valor = valor;
}
void modificaValorExterno( int valor ){
Externa.this.valor = valor;
}
}
}
Espero ter ajudado =)
[]`s