«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Понимание сопоставления с образцом в Java

Понимание сопоставления с образцом в Java

Опубликовано 31 июля 2024 г.
Просматривать:405

Understanding Pattern Matching in Java

Сопоставление с образцом — это мощная функция, представленная в Java, которая позволяет упростить и улучшить читаемость вашего кода. Сопоставление с образцом, впервые представленное в Java 14 для проверок экземпляров и расширенное в более поздних версиях, обеспечивает более выразительный и краткий код за счет сокращения шаблонного кода.

Что такое сопоставление с образцом?

Сопоставление с образцом позволяет извлекать компоненты из объектов и лаконично применять определенные условия. Это функция, которая проверяет значение на соответствие шаблону и, если совпадение успешно, связывает переменные из шаблона.

Преимущества сопоставления с образцом

  1. Краткий код: сокращает количество шаблонного кода, делая ваши программы короче и удобнее для чтения.
  2. Улучшенная читаемость: повышает ясность вашего кода, делая структуру более наглядной.
  3. Типовая безопасность: гарантирует правильность типа переменных, снижая вероятность ошибок во время выполнения.

Сопоставление шаблонов с помощью экземпляра

Одним из наиболее распространенных способов сопоставления с образцом является использование оператора экземпляра. Вот пример:

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");
        }
    }
}

В этом примере оператор экземпляра не только проверяет, является ли obj строкой, но также преобразует его в строку и привязывает его к переменной s за один шаг.

Сопоставление с образцом с помощью выражений переключения

Сопоставление с образцом также используется с выражениями переключателей, что повышает их мощность и гибкость. Вот пример использования запечатанных классов:

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);
    }
}

В этом примере выражение переключателя использует сопоставление с образцом для деструктурирования объектов Shape и извлечения соответствующих данных.

Заключение

Сопоставление с образцом в Java обеспечивает новый уровень выразительности и простоты вашего кода. Уменьшая количество шаблонов и повышая читаемость, вы можете писать более чистые и удобные в сопровождении программы. Независимо от того, работаете ли вы со сложными структурами данных или просто пытаетесь упростить проверку типов, сопоставление с образцом — ценный инструмент в вашем наборе инструментов Java.

Заявление о выпуске Эта статья воспроизведена по адресу: https://dev.to/adaumircosta/understanding-pattern-matching-in-java-3f0k?1 Если есть какие-либо нарушения, пожалуйста, свяжитесь с [email protected], чтобы удалить ее.
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3