"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Compreendendo a correspondência de padrões em Java

Compreendendo a correspondência de padrões em Java

Publicado em 31/07/2024
Navegar:319

Understanding Pattern Matching in Java

A correspondência de padrões é um recurso poderoso introduzido em Java que permite simplificar e aprimorar a legibilidade do seu código. Introduzido inicialmente em Java 14 para verificações de instância e estendido em versões posteriores, a correspondência de padrões permite um código mais expressivo e conciso, reduzindo o clichê.

O que é correspondência de padrões?

A correspondência de padrões permite extrair componentes de objetos e aplicar certas condições de maneira concisa. É um recurso que verifica um valor em relação a um padrão e, se a correspondência for bem-sucedida, vincula variáveis ​​do padrão.

Benefícios da correspondência de padrões

  1. Código Conciso: Reduz o código clichê, tornando seus programas mais curtos e fáceis de ler.
  2. Legibilidade aprimorada: aumenta a clareza do seu código, tornando a estrutura mais aparente.
  3. Type Safety: Garante que as variáveis ​​sejam digitadas corretamente, reduzindo a probabilidade de erros de tempo de execução.

Correspondência de padrões com instanceof

Um dos usos mais comuns da correspondência de padrões é com o operador instanceof. Aqui está um exemplo:

public class PatternMatchingExample {
    public static void main(String[] args) {
        Object obj = "Hello, World!";

        if (obj instanceof String s) {
            System.out.println("The string is: "   s);
        } else {
            System.out.println("Not a string");
        }
    }
}

Neste exemplo, o operador instanceof não apenas verifica se obj é uma String, mas também o converte em uma String e o vincula à variável s em uma única etapa.

Correspondência de padrões com expressões switch

A correspondência de padrões também é usada com expressões switch, aumentando seu poder e flexibilidade. Aqui está um exemplo usando classes seladas:

public sealed class Shape permits Circle, Rectangle, Square {}

public final class Circle extends Shape {
    private final double radius;

    public Circle(double radius) {
        this.radius = radius;
    }

    public double radius() { return radius; }
}

public final class Rectangle extends Shape {
    private final double width, height;

    public Rectangle(double width, double height) {
        this.width = width;
        this.height = height;
    }

    public double width() { return width; }
    public double height() { return height; }
}

public final class Square extends Shape {
    private final double side;

    public Square(double side) {
        this.side = side;
    }

    public double side() { return side; }
}

public class PatternMatchingWithSwitch {
    public static void main(String[] args) {
        Shape shape = new Circle(5);

        String result = switch (shape) {
            case Circle c -> "Circle with radius "   c.radius();
            case Rectangle r -> "Rectangle with width "   r.width()   " and height "   r.height();
            case Square s -> "Square with side "   s.side();
        };

        System.out.println(result);
    }
}

Neste exemplo, a expressão switch usa correspondência de padrões para desestruturar os objetos Shape e extrair dados relevantes.

Conclusão

A correspondência de padrões em Java traz um novo nível de expressividade e simplicidade ao seu código. Ao reduzir o padrão e melhorar a legibilidade, ele permite que você escreva programas mais limpos e de fácil manutenção. Esteja você trabalhando com estruturas de dados complexas ou simplesmente tentando agilizar suas verificações de tipo, a correspondência de padrões é uma ferramenta valiosa em seu kit de ferramentas Java.

Declaração de lançamento Este artigo está reproduzido em: https://dev.to/adaumircosta/understanding-pattern-matching-in-java-3f0k?1 Se houver alguma infração, entre em contato com [email protected] para excluí-la
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3