- Java 패턴 매칭(Pattern Matching)2025년 03월 25일 15시 40분 23초에 업로드 된 글입니다.작성자: Jeyeon
1. Java의 Pattern Matching이란?
Pattern Matching은 Java에서 보다 간결하고 읽기 쉬운 코드를 작성하기 위해 도입된 기능이다.
이는 조건 검사를 더 효율적으로 수행하고, 복잡한 객체의 타입을 식별하여 각 상황에 맞는 동작을 실행할 수 있도록 돕는다.
주요 예제로는 switch 문과 instanceof 연산자를 활용한 Pattern Matching이 있다. 이 기능은 조건문에서 불필요한 반복 코드를 제거하고 코드의 가독성을 높인다.
2. Pattern Matching의 특징
기존의 Java 코드에서는 타입 확인 후 명시적으로 타입 변환(casting)을 수행해야 했다. Pattern Matching은 이러한 과정을 자동화하여 코드량을 줄이고, 가독성을 높여 준다. 그리고 Pattern Matching을 활용하면 타입 변환에서 발생할 수 있는 오류를 미리 방지할 수 있다. 이는 컴파일 타임에서 오류를 확인할 수 있게 해 준다. 또한, 조건문 안에서 더 복잡하고 다양한 로직을 쉽게 처리할 수 있도록 설계되었다. 이를 통해 개발자는 보다 직관적이고 간결한 코드를 작성할 수 있다.
3. 사용 예제
Pattern Matching을 활용한 switch문은 기존의 switch문과 유사하지만, 조건에 따른 타입 변환을 더 간결하게 처리할 수 있게 해준다.
public class PatternMatchingSwitchExample { public static void main(String[] args) { Object obj = "Hello, world!"; String result = switch (obj) { case Integer i -> "정수입니다: " + i; case String s -> "문자열입니다: " + s.toUpperCase(); case Double d -> "실수입니다: " + d; default -> "알 수 없는 타입입니다."; }; System.out.println(result); // 문자열입니다: HELLO, WORLD! } }
위 예제는 obj 타입의 변수가 어떤 타입인지 검사함과 동시에 자동으로 타입 매칭을 진행하여 case 스코프 내에서 사용할 수 있도록 제공하고 있다.
Pattern Matching을 활용한 instanceof문은 기존의 if문과 결합하여 사용할 수 있다.
public class PatternMatchingInstanceofExample { public static void main(String[] args) { Object obj = "Java Pattern Matching"; if (obj instanceof String s) { System.out.println("문자열 길이: " + s.length()); } else if (obj instanceof Integer i) { System.out.println("정수 값: " + i); } else { System.out.println("알 수 없는 타입입니다."); } } }
위와 같이 instanceof로 obj가 String 타입인 경우 s라는 String 변수를 선언하여 if문 스코프 내에서 사용할 수 있게 제공해 준다.
public static void main(String[] args) { Object obj = "Java Pattern Matching"; if (!(obj instanceof String s)) return; System.out.println(s); }
위와 같이 조건을 반전하여 사용하는 것도 가능하다
public record Person(String name, int age) {} public class PatternMatchingWithRecordExample { public static void main(String[] args) { Object obj = new Person("Alice", 30); // Pattern Matching을 활용하여 record 타입의 객체 필드에 접근 if (obj instanceof Person(String name, int age)) { System.out.println(name + " is " + age + " years old."); } else { System.out.println("Unknown object type"); } } }
위는 record 타입을 검사하는 과정이다. Person이라는 객체임이 확인되면 그 내부의 name, age 필드의 값을 가져와 변수를 선언하여 즉시 접근이 가능하도록 할 수 있다.
정리
✅ Pattern Matching은 조건문을 간결하고 안전하게 만들어주는 기능
✅ switch와 instanceof를 간소화하여 코드 가독성 향상
✅ 객체 타입에 맞는 자동 캐스팅을 제공하여 타입 변환 오류 방지
✅ record와 결합 시, 객체 필드를 쉽게 매칭하고 코드 유지보수성 향상
✅ 컴파일 타임에서 오류를 발견할 수 있어 코드 안정성 향상
'Language > JAVA' 카테고리의 다른 글
Java 21 Virtual Thread 알아보기 (1) 2025.04.11 Java 16 Record class (1) 2025.03.24 Java 17 sealed class (sealed - permit 예약어) (0) 2025.03.24 자바 직렬화(Serialization)와 역직렬화(Deserialization) (0) 2024.12.19 다음글이 없습니다.이전글이 없습니다.댓글