Article image
Olival Neto
Olival Neto20/02/2023 21:47
Compartilhe

Em ritmo de Carnaval, vamos falar de Classe Anônima? Vou criar um Objeto anônimo para esse Baile de Máscaras.

  • #Java

Salve, turma. Hoje, você aprenderá sobre classe anônima.

Escolhi essa bela mascarada da foto, para representar a criação de algo, que não se sabe o nome, e utilizá-lo como se existisse? Faz sentido para você? haha

Então, vamos a um exemplo:

Normalmente, declaramos objetos assim: Pessoa olival = new Pessoa();

Acho que até aqui tudo bem, não é mesmo?!

Agora, imagine, que você tem um construtor que aceita outro objeto, tal como:

public Pessoa(String nome, Endereco endereco) {

this.nome = nome;

this.endereco = endereco;

}

Acredito que está tudo bem até aqui, certo? Afinal, estamos utilizando nomes para os objetos.

Agora, veja como seria se esse construtor recebesse um objeto anônimo, no momento da instanciação de um objeto pessoa, que recebe os parâmetros nome e um objeto endereço:

public static void main(String args[]) {

Pessoa olival = new Pessoa("olival paulino", new Endereco("alagoas", "palmeira", "57603130"));

}

Se você notou, no lugar de instanciar um objeto do tipo endereço separado, para utilizá-lo depois, informando o seu nome, neste construtor acima, eu já o instanciei sem precisar informar o nome.

Legal, né?! Ou não rsrs

Isso é classe anônima. Para simplificar, você pode pensar como se fosse um new, dentro de outro new, ou melhor dizendo, quando você cria um objeto, informando o nome, e ele requisita um objeto, você não precisa declarar uma variável para isso, informando o nome dela.

É só instanciar com new e pronto. Um objeto anônimo nasce.

A turma gosta muito de utilizar esse conceito quando se trabalha com arrays de objetos, como por exemplo:

ArrayList<String> listaDeNomes = new ArrayList<String>() {

add("olival");

add("pedro");

add("marilia");

};

Ou seja, o código acima substitui a seguinte implementação:

ArrayList<String> listaDeNomes = new ArrayList<String>();

listaDeNomes.add("olival");

listaDeNomes.add("pedro");

listaDeNomes.add("marilia");

Ou seja, para que eu preciso informar o nome de um objeto, se eu já sei o que vou fazer com ele? Neste caso, do ArrayList de nomes, o que eu queria fazer era adicionar três elementos com o método add(). Logo, se eu posso fazer isso sem informar o nome do objeto, então... Por que não fazê-lo?

Mas, você deve estar se pergunta: Por que eu devo usar isso? Quais os benefícios?

Afinal, o código pode ficar mais complexo, não é mesmo?!

O principal motivo é flexibilidade. Você cria códigos rapidamente, desde que entenda deste conceito.

Mas, não é algo obrigatório, pois, você usa de acordo com a sua necessidade. Elas são usadas para criação de objetos temporários em tempo de execução. São usadas mais dentro de construtores e métodos.

Elas também são usadas para mudar comportamentos ou sobrescrevê-los, de um classe que já existe. Aí, já viu né?! Isso envolve encapsulamento e sobrescrita. É algo útil. Depois que aprende, fica fácil de usar.

Quando eu vi isso a primeira vez, a mente até bugou um pouco. Mas, agora, é algo que é fácil de aplicar. Mas, é sempre assim, não é mesmo? O novo assusta, causa um certo desconforto e rejeição a usar, e depois de um tempo, você se adapta e está utilizando.

Espero que esse conteúdo destrave sua mente e se gerou um desconforto, entenda... é algo aceitável neste primeiro momento. Depois, a utilização virá.

LinkedIn: https://www.linkedin.com/in/olivalpaulino/

Bons estudos.

Compartilhe
Comentários (6)
Tennison Capra
Tennison Capra - 21/02/2023 12:40

Eu gosto muito de usar os métodos List.of() e Arrays.asList() para simplificar.


Por exemplo:

List<Pessoa> pessoas = List.of(new Pessoa("Fulano"), new Pessoa("Sicrano"), new Pessoa("Deltrano"));


Cleber Couto
Cleber Couto - 21/02/2023 10:46

Obrigado, Olival.

Fabricio Neto
Fabricio Neto - 21/02/2023 08:40

No caso do List<> é bacana, mas usar com substituto de herança acho muito a manutenção do codigo

Gabriel Gregorio
Gabriel Gregorio - 21/02/2023 00:07

Parabéns pelo artigo Neto!

Ficou muito bom ,onde você expôs todo o seu pensamento e raciocínio.

Parabéns!

Thiago Gaspar
Thiago Gaspar - 20/02/2023 22:14

Colombina... hehehe

Heverton Barbosa
Heverton Barbosa - 20/02/2023 21:52

achei legal