Qual a vantagem de se utilizar a cláusula this?

3 respostas
cris_sisinfo

Oie pessoal.

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

Obrigada.

:slight_smile:

3 Respostas

T

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;            

   }
B

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

Polimorphism

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

Criado 3 de outubro de 2009
Ultima resposta 3 de out. de 2009
Respostas 3
Participantes 4