패턴 매칭
Coddy Java 여정의 논리와 흐름 섹션에 포함된 레슨. 59개 중 37번째.
Java의 패턴 매칭을 사용하면 객체가 특정 유형인지 테스트하고 객체에서 구성 요소를 추출할 수 있습니다. 이를 통해 유형 검사 및 캐스팅 작업을 간소화할 수 있습니다.
instanceof와 함께 패턴 매칭을 사용하는 방법을 살펴보겠습니다:
Object obj = "Hello";
if (obj instanceof String str) {
// str은 자동으로 String으로 형변환됩니다
System.out.println(str.toUpperCase());
}위 코드를 실행한 후 출력은 다음과 같습니다:
"HELLO"
else if를 사용해 패턴 일치 검사들을 연결할 수도 있습니다:
Object value = 42;
String result;
if (value instanceof Integer i) {
result = "Number: " + i;
} else if (value instanceof String s) {
result = "Text: " + s;
} else {
result = "Unknown";
}위 코드를 실행한 후, result에는 다음이 포함됩니다:
“Number: 42”
챌린지
쉬움processValue라는 이름의 메서드를 만들고 인수 하나를 받도록 하세요.
- 다양한 유형일 수 있는 Object(
value)
이 메서드는 instanceof를 사용한 패턴 매칭으로 값을 처리하고, 다음 규칙에 따라 문자열을 반환해야 합니다.
- Integer인 경우: "Number: "를 반환한 다음 값의 두 배를 이어 붙입니다.
- String인 경우: "Text: "를 반환한 다음 대문자로 변환한 값을 이어 붙입니다.
- Boolean인 경우: "Boolean: "을 반환한 다음 반대 값을 이어 붙입니다(true는 false가 되고 그 반대도 마찬가지입니다).
- 그 외의 유형인 경우: "Unknown"을 반환합니다.
직접 해보기
import java.util.Scanner;
public class Main {
public static String processValue(Object value) {
// TODO: instanceof를 사용한 패턴 매칭으로 값을 처리하세요
// Integer인 경우: "Number: " + (value * 2)를 반환하세요
// String인 경우: "Text: " + value.toUpperCase()를 반환하세요
// Boolean인 경우: "Boolean: " + (!value)를 반환하세요
// 그 외의 타입인 경우: "Unknown"을 반환하세요
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String type = scanner.nextLine();
String inputValue = scanner.nextLine();
Object value = switch(type) {
case "Integer" -> Integer.parseInt(inputValue);
case "String" -> inputValue;
case "Boolean" -> Boolean.parseBoolean(inputValue);
default -> inputValue;
};
System.out.println(processValue(value));
}
}이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
논리와 흐름의 모든 레슨
직접 연습해 보세요: 온라인 Java 컴파일러