DEV Community

Cover image for Quando usar Classes aninhadas, classes locais, classes anônimas e expressões lambdas
Carolina Dias Fonseca
Carolina Dias Fonseca

Posted on • Edited on

7 1

Quando usar Classes aninhadas, classes locais, classes anônimas e expressões lambdas

Classe aninhada

O Java te permite definir uma classe dentro de outra. Exemplo:

class ClasseExterna {
    ...
    class ClasseAninhada {
        ...
    }
}
Enter fullscreen mode Exit fullscreen mode

Classes aninhadas te permitem ter lógica de grupo de classes que vocês está utilizando em um único lugar, o ponto positivo é que esse tipo de recurso aumento o encapsulamento, cria um código mais legível e melhora a manutenção do código.

Já as classes locais, classes anônimas e expressões lambdas também dão os mesmo benefícios, porém são recomendadas para usos mais específicos.

Classe local

Classes locais são aquelas que você define dentro do bloco. Você normalmente encontra classes locais definidas dentro de corpo de métodos.

public class ExemploClasseLocal {

    static String regularExpression = "[^0-9]";

        //Método que precisamos
    public static void validarTelefone(
        String telefone1, String telefone2) {

        final int tamanhoTelefone = 10;

                //Criamos uma classe para poder implementar a lógica de validação do telefone
        class NumeroTelefone {

            String numeroTelefoneFormatado = null;

            PhoneNumber(String numeroTelefone){

                String numeroAtual = numeroTelefone.replaceAll(
                  regularExpression, "");
                if (numeroAtual.length() == tamanhoTelefone)
                    numeroTelefoneFormatado = numeroAtual;
                else
                    numeroTelefoneFormatado = null;
            }

            public String getNumero() {
                return numeroTelefoneFormatado;
            }


        NumeroTelefone numero1 = new NumeroTelefone(telefone1);
        NumeroTelefone numero2 = new NumeroTelefone(telefone2);

        if (numero1.getNumero() == null) 
            System.out.println("Primeiro número é inválido");
        else
            System.out.println("Primeiro número é " + numero1.getNumero());
        if (numero2.getNumber() == null)
            System.out.println("Segundo número é inválido");
        else
            System.out.println("Segundo número é  " + numero2.getNumero());

    }

        //Chamando o nosso método de validação de telefone
    public static void main(String... args) {
        validarTelefone("123-456-7890", "456-7890");
    }
}
Enter fullscreen mode Exit fullscreen mode

Use caso você precise criar mais de uma instância da classe, acessar seu construtor ou criar um novo.

Classe Anônima

Use caso você precise declarar campos ou adicionar métodos.

Expressão Lambda

Use caso você esteja encapsulando um único comportamento que você quer passar para outro trecho de código. Por exemplo, você pode usar expressão lambda se você quer que determinada ação performe em cada elemento de uma collection quando o processo está completo ou quando o processo encontra algum erro.

Você também pode usar caso precise de uma única instância de uma interface funcional e você não precisa de nada muito completo (exemplo: você não precisa de construtor, um nome tipado, campos ou métodos adicionais).

Fonte traduzida livremente: https://docs.oracle.com/javase/tutorial/java/javaOO/whentouse.html

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 (1)

Collapse
 
rregio profile image
Rodrigo Régio

Nossa alguém falando de Java no Brasil kkk muito bom seus posts, li uns 3 e gostei de todos que li, breve tentarei ler todos os seus. Parabéns e continue trazendo mais coisas de Java e relacionados...

The Most Contextual AI Development Assistant

Pieces.app image

Our centralized storage agent works on-device, unifying various developer tools to proactively capture and enrich useful materials, streamline collaboration, and solve complex problems through a contextual understanding of your unique workflow.

👥 Ideal for solo developers, teams, and cross-company projects

Learn more

👋 Kindness is contagious

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

Okay