패턴 일치는 코드의 가독성을 단순화하고 향상시킬 수 있도록 Java에 도입된 강력한 기능입니다. 처음에는 검사 인스턴스를 위해 Java 14에 도입되었고 이후 버전에서 확장된 패턴 일치는 상용구를 줄여 더욱 표현력이 뛰어나고 간결한 코드를 가능하게 합니다.
패턴 매칭을 사용하면 객체에서 구성요소를 추출하고 특정 조건을 간결하게 적용할 수 있습니다. 패턴과 비교하여 값을 확인하고, 일치에 성공하면 패턴에서 변수를 바인딩하는 기능입니다.
패턴 일치의 가장 일반적인 용도 중 하나는 instanceof 연산자를 사용하는 것입니다. 예는 다음과 같습니다.
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"); } } }
이 예에서 instanceof 연산자는 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 툴킷의 귀중한 도구입니다.
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3