Guia para esta palavra-chave Java
1. Introdução
Neste tutorial,we’ll take a look at the this Java keyword.
Em Java,this keyword is a reference to the current object whose method is being called.
Vamos explorar como e quando podemos usar a palavra-chave.
2. Desambiguação de Sombreamento de Campo
The keyword is useful for disambiguating instance variables from local parameters. O motivo mais comum é quando temos parâmetros de construtor com o mesmo nome que os campos da instância:
public class KeywordTest {
private String name;
private int age;
public KeywordTest(String name, int age) {
this.name = name;
this.age = age;
}
}
Como podemos ver aqui, estamos usandothis com os campos de instâncianameeage - para distingui-los dos parâmetros.
Outro uso é usarthis com o parâmetro ocultar ou sombreamento no escopo local. Um exemplo de uso pode ser encontrado no artigoVariable and Method Hiding.
3. Referenciando construtores da mesma classe
From a constructor, we can use this() to call a different constructor of the same class. Aqui, usamosthis() para o encadeamento do construtor para reduzir o uso de código.
O caso de uso mais comum é chamar um construtor padrão a partir do construtor parametrizado:
public KeywordTest(String name, int age) {
this();
// the rest of the code
}
Ou, podemos chamar o construtor parametrizado do construtor no argument e passar alguns argumentos:
public KeywordTest() {
this("John", 27);
}
Observe quethis() deve ser a primeira instrução no construtor, caso contrário, ocorrerá um erro de compilação.
4. Passandothis como um parâmetro
Aqui temos o métodoprintInstance(), onde o argumentothis Keyword é definido:
public KeywordTest() {
printInstance(this);
}
public void printInstance(KeywordTest thisKeyword) {
System.out.println(thisKeyword);
}
Dentro do construtor, invocamos o métodoprintInstance(). Comthis, passamos uma referência à instância atual.
5. Retornandothis
We can also use this keyword to return the current class instance do método.
Para não duplicar o código, aqui está um exemplo prático completo de como ele é implementado nobuilder design pattern.
6. A palavra-chavethis dentro da classe interna
Também usamosthis para acessar a instância da classe externa de dentro da classe interna:
public class KeywordTest {
private String name;
class ThisInnerClass {
boolean isInnerClass = true;
public ThisInnerClass() {
KeywordTest thisKeyword = KeywordTest.this;
String outerString = KeywordTest.this.name;
}
}
}
Aqui, dentro do construtor, podemos obter uma referência à instânciaKeywordTest com a chamadaKeywordTest.this. Podemos ir ainda mais fundo e acessar as variáveis de instância comoKeywordTest.this.name field.
7. Conclusão
Neste artigo, exploramos a palavra-chavethis em Java.
Como de costume, o código completo está disponívelover on Github.