Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Industrial programming >> Java

Palavra-chave this em Java: Usos Práticos, Construtores e Mais

Palavra-chave this em Java Explicada

Este artigo aborda a palavra-chave this em Java, cobrindo seu propósito, cenários comuns e boas práticas com exemplos reais claros.

O que é this?

Em Java, a palavra-chave this refere-se à instância atual de uma classe. É mais comumente usada dentro de métodos de instância ou construtores para diferenciar entre variáveis de instância e parâmetros que compartilham o mesmo nome.

class Main { int varInst; Main(int varInst){ this.varInst = varInst; System.out.println("referência this = " + this); } public static void main(String[] args) { Main obj = new Main(8); System.out.println("referência objeto = " + obj); } }

Saída:

referência this = Main@23fc625e referência objeto = Main@23fc625e

Tanto this quanto a variável obj apontam para a mesma instância de objeto, confirmando que this é simplesmente uma referência ao objeto atual.


Quando Usar this

A palavra-chave é inestimável em vários padrões comuns de codificação:

Resolvendo Ambiguidade de Nomes de Variáveis

Java permite que um parâmetro compartilhe o nome com uma variável de instância, mas sem this o compilador não sabe qual você pretende. Por exemplo:

class MinhaClasse { int idade; MinhaClasse(int idade){ idade = idade; } }

No construtor acima, idade = idade atribui o parâmetro a si mesmo, deixando a variável de instância inalterada. Usar this esclarece a atribuição:

class Main { int idade; Main(int idade){ this.idade = idade; } public static void main(String[] args) { Main obj = new Main(8); System.out.println("obj.idade = " + obj.idade); } }

Saída:

obj.idade = 8

Se o nome do parâmetro difere da variável de instância, o compilador usa this implicitamente:

class Main { int idade; Main(int i) { idade = i; } }

Isto é equivalente a this.idade = i.

Usando this em Getters e Setters

Setters e getters frequentemente aceitam um parâmetro com o mesmo nome do campo. this garante que a variável correta seja alvo:

class Main { String nome; // setter void setNome(String nome) { this.nome = nome; } // getter String getNome(){ return this.nome; } public static void main(String[] args) { Main obj = new Main(); obj.setNome("Toshiba"); System.out.println("obj.nome: " + obj.getNome()); } }

Saída:

obj.nome: Toshiba

Sobrecarga de Construtor com this()

Quando um construtor precisa delegar a outro, this() realiza uma invocação explícita de construtor:

class Complexo { private int a, b; private Complexo(int i, int j){ this.a = i; this.b = j; } private Complexo(int i){ this(i, i); // chama construtor de dois parâmetros } private Complexo(){ this(0); // chama construtor de um parâmetro } @Override public String toString(){ return this.a + " + " + this.b + "i"; } public static void main(String[] args) { Complexo c1 = new Complexo(2, 3); Complexo c2 = new Complexo(3); Complexo c3 = new Complexo(); System.out.println(c1); System.out.println(c2); System.out.println(c3); } }

Saída:

2 + 3i 3 + 3i 0 + 0i

Pontos-chave:

Nota: Invocação explícita de construtor via this() deve ser a primeira instrução no construtor.

Passando this como Argumento

Como this é uma referência ao objeto atual, pode ser passado a outros métodos, permitindo que modifiquem o estado do objeto:

class ExemploThis { int x; int y; ExemploThis(int x, int y) { this.x = x; this.y = y; System.out.println("Antes de passar this para addDois():"); System.out.println("x = " + this.x + ", y = " + this.y); add(this); // passa instância atual System.out.println("Depois de passar this para addDois():"); System.out.println("x = " + this.x + ", y = " + this.y); } void add(ExemploThis o){ o.x += 2; o.y += 2; } } class Main { public static void main(String[] args) { new ExemploThis(1, -2); } }

Saída:

Antes de passar this para addDois() método: x = 1, y = -2 Depois de passar this para addDois() método: x = 3, y = 0

Aqui, o método add recebe a mesma instância de objeto e atualiza seus campos diretamente.

Java

  1. Dominando a Palavra-chave this em C#
  2. Dominando Operadores Java: Tipos, Sintaxe e Exemplos Práticos
  3. Comentários em Java: Tipos, Uso e Boas Práticas
  4. Dominando o Loop for Aprimorado em Java: Sintaxe, Exemplos e Boas Práticas
  5. Dominando Construtores em Java: Tipos, Uso e Exemplos Práticos
  6. Dominando Strings em Java: Criação, Métodos e Boas Práticas
  7. Palavra-chave this em Java: Usos Práticos, Construtores e Mais
  8. Entendendo a Palavra-chave final em Java: Variáveis, Métodos e Classes
  9. Dominando Interfaces em Java: Conceitos, Implementação e Boas Práticas
  10. Dominando Encapsulamento em Java: Guia Prático de Ocultação de Dados