Dominando Classes Internas Anônimas em Java: Definição, Sintaxe e Exemplos Práticos
Dominando Classes Internas Anônimas em Java
Descubra como definir, implementar e aproveitar classes internas anônimas em Java com exemplos claros do mundo real.
Em Java, uma classe pode aninhar outra classe — uma inner class. Quando essa inner class não tem nome explícito, é chamada de classe interna anônima.
Classes internas anônimas são definidas inline dentro de outra classe ou expressão. Como não têm nome, são criadas apenas quando o código envolvente roda, tornando-as ideais para implementações curtas, de uso único.
O padrão típico é:
class ClasseExterna { // criar instância de classe interna anônima Tipo instancia = new Tipo(parâmetros) { // métodos sobrescritos ou comportamento adicional }; }
Aqui, Tipo pode ser:
- uma superclasse que a classe anônima estende
- uma interface que a classe anônima implementa
Em tempo de execução, a declaração acima constrói uma instância da classe anônima, que pode então ser usada através do tipo de referência declarado.
Importante: Como a declaração é uma expressão, o ponto e vírgula final encerra a declaração, não o corpo da classe.
Exemplo 1: Estendendo uma Classe com Classe Interna Anônima
class Poligono { public void exibir() { System.out.println("Dentro da classe Poligono"); } } class DemoAnonimo { public void criarClasse() { Poligono p1 = new Poligono() { @Override public void exibir() { System.out.println("Dentro de uma classe anônima."); } }; p1.exibir(); } } public class Main { public static void main(String[] args) { new DemoAnonimo().criarClasse(); } }
Saída
Dentro de uma classe anônima.
Nesta ilustração, a classe anônima estende Poligono e sobrescreve exibir(). Quando criarClasse() roda, uma instância da subclasse anônima é criada, e seu método sobrescrito é invocado.
Exemplo 2: Implementando uma Interface com Classe Interna Anônima
interface Poligono { void exibir(); } class DemoAnonimo { public void criarClasse() { Poligono p1 = new Poligono() { @Override public void exibir() { System.out.println("Dentro de uma classe anônima."); } }; p1.exibir(); } } public class Main { public static void main(String[] args) { new DemoAnonimo().criarClasse(); } }
Saída
Dentro de uma classe anônima.
Aqui, a classe anônima implementa a interface Poligono, fornecendo a implementação do método requerida em um único bloco conciso.
Por Que Usar Classes Internas Anônimas?
Classes internas anônimas brilham em cenários onde você precisa de implementação breve e específica ao contexto:
- Event listeners e callbacks em frameworks GUI — anexe comportamento facilmente sem criar classe nomeada separada.
- Criação de threads via
Runnable— escreva a lógica run inline. - Adaptadores ou wrappers locais — sobrescreva alguns métodos de uma classe existente.
Benefícios incluem:
- Concisão — sem arquivo separado ou declaração de classe.
- Controle de escopo — a classe só é visível onde é definida.
- Flexibilidade em tempo de execução — instâncias são criadas apenas quando necessárias.
Para lógica maior e reutilizável, considere classes nomeadas ou expressões lambda (para interfaces funcionais) para manter o código sustentável.
Java
- Entendendo a Palavra-chave final em Java: Variáveis, Métodos e Classes
- Operador instanceof em Java: Guia Completo
- Dominando Herança em Java: Conceitos, Tipos e Exemplos Práticos
- Entendendo Classes Aninhadas Estáticas em Java: Uso, Diferenças e Exemplos
- Padrão Singleton em Java Explicado: Como Implementar e Usar com Segurança
- Dominando Reflection em Java: Inspecionando Classes, Métodos e Campos em Tempo de Execução
- Dominando ArrayList em Java: Operações, Métodos e Boas Práticas
- Dominando Java ObjectOutputStream: Serialização, Métodos e Exemplos Práticos
- Dominando Java Generics – Construindo Código Reutilizável e Type-Safe
- Dominando Operações de Arquivo em Java com java.io – Criação, Leitura, Escrita e Exclusão