DEV Community

Cover image for Expressão Lambda - Parte I (Classes anônimas)
Carolina Dias Fonseca
Carolina Dias Fonseca

Posted on • Edited on

11 2

Expressão Lambda - Parte I (Classes anônimas)

Estudando um pouco sobre Expressão Lambda em Java, acabei caindo na documentação e, consequentemente, li sobre Classe Anônima.

Achei legal e resolvi traduzir e tentar resumir:

Classes anônimas te permitem criar um código mais conciso. Elas te permitem declarar e instanciar uma classe ao mesmo tempo.

Elas são como classes locais exceto pelo fato de que elas não possuem nome.

Recomenda-se que você as utilize caso precise de uma classe local uma única vez.

Declarando uma classe anônima

Enquanto classes locais são classes declaradas, as classes anônimas são expressões o que significa que você define a classe em outra expressão.

Exemplo:

public class HelloWorldAnonymousClasses {

    interface HelloWorld {
        public void greet();
        public void greetSomeone(String someone);
    }

    public void sayHello() {

        class EnglishGreeting implements HelloWorld {
            String name = "world";
            public void greet() {
                greetSomeone("world");
            }
            public void greetSomeone(String someone) {
                name = someone;
                System.out.println("Hello " + name);
            }
        }
      //classe declarada na inicialização
        HelloWorld englishGreeting = new EnglishGreeting();

//classe anônima na inicialização da variável frenchGreeting
        HelloWorld frenchGreeting = new HelloWorld() {
            String name = "tout le monde";
            public void greet() {
                greetSomeone("tout le monde");
            }
            public void greetSomeone(String someone) {
                name = someone;
                System.out.println("Salut " + name);
            }
        };

        //classe anônima na inicialização da variável frenchGreeting
        HelloWorld spanishGreeting = new HelloWorld() {
            String name = "mundo";
            public void greet() {
                greetSomeone("mundo");
            }
            public void greetSomeone(String someone) {
                name = someone;
                System.out.println("Hola, " + name);
            }
        };
//Mesmo efeito no final das constas
        englishGreeting.greet();
        frenchGreeting.greetSomeone("Fred");
        spanishGreeting.greet();
    }

    public static void main(String... args) {
        HelloWorldAnonymousClasses myApp =
            new HelloWorldAnonymousClasses();
        myApp.sayHello();
    }            
}
Enter fullscreen mode Exit fullscreen mode

Sintaxe da classe anônima

Como já mencionado anteriormente, uma classe anônima é uma expressão.

A sintaxe de uma classe anônima é igual a invocação de um construtor, exceto pela definição contida no bloco de código.

Considere a instância do objeto frenchGreeting:

HelloWorld frenchGreeting = new HelloWorld() {
            String name = "tout le monde";
            public void greet() {
                greetSomeone("tout le monde");
            }
            public void greetSomeone(String someone) {
                name = someone;
                System.out.println("Salut " + name);
            }
        };
Enter fullscreen mode Exit fullscreen mode

A classe anônima consiste no seguinte:

  • O operador new
  • O nome de uma interface para implementar ou para estender. No exemplo anterior, a classe anônima está implementando a interface HelloWorld.
  • Parênteses que contém os argumentos para um construtor, exatamente igual a instância de uma classe normal. Nota: Quando você implementa uma interface, não tem construtor, então você só usa um par de parênteses igual ao exemplo.
  • Um corpo onde se faz a declaração do corpo da classe. Mais especificamente, no corpo, declaração de método são permitidos porém declarações não.

Considerando que a definição de uma classe anônima é ser uma expressão, ela tem que ser parte de uma variável.

Fonte: Documentação Java

Hostinger image

Get n8n VPS hosting 3x cheaper than a cloud solution

Get fast, easy, secure n8n VPS hosting from $4.99/mo at Hostinger. Automate any workflow using a pre-installed n8n application and no-code customization.

Start now

Top comments (2)

Collapse
 
andreluisbarreto profile image
Andre Barreto

Sensacional!

Collapse
 
belo355 profile image
Edilson Belo

top !\

Billboard image

The Next Generation Developer Platform

Coherence is the first Platform-as-a-Service you can control. Unlike "black-box" platforms that are opinionated about the infra you can deploy, Coherence is powered by CNC, the open-source IaC framework, which offers limitless customization.

Learn more

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay