본문 바로가기
IT-Language/IT-Java

JAVA17 - switch

by onfact 2023. 11. 5.

 

- Pattern Matching for switch

Java 17에서 패턴 매칭은 switch 문에서 개선되었습니다. 이것은 코드를 더 간결하게 만들고, 더 안전하게 작성하며, 유지 관리하기 쉽게 만듭니다.

예를 들어, 이전 버전의 Java에서는 switch 문으로 instanceof 연산자를 사용하여 형변환 후에 사용할 수 있었지만, Java 17에서는 더 간단한 방법으로 작성할 수 있습니다:

 

[ JAVA7~ ]

public String getDayOfWeek(String day) {
    String dayOfWeek;
    
    switch (day) {
        case "Monday":
            dayOfWeek = "It's Monday!";
            break;
        case "Tuesday":
            dayOfWeek = "It's Tuesday!";
            break;
        case "Wednesday":
            dayOfWeek = "It's Wednesday!";
            break;
        case "Thursday":
            dayOfWeek = "It's Thursday!";
            break;
        case "Friday":
            dayOfWeek = "It's Friday!";
            break;
        case "Saturday":
            dayOfWeek = "It's Saturday!";
            break;
        case "Sunday":
            dayOfWeek = "It's Sunday!";
            break;
        default:
            dayOfWeek = "Invalid day";
    }
    
    return dayOfWeek;
}

 

[ JAVA17 ]

public String getDayOfWeek(String day) {
    return switch (day) {
        case "Monday" -> "It's Monday!";
        case "Tuesday" -> "It's Tuesday!";
        case "Wednesday" -> "It's Wednesday!";
        case "Thursday" -> "It's Thursday!";
        case "Friday" -> "It's Friday!";
        case "Saturday" -> "It's Saturday!";
        case "Sunday" -> "It's Sunday!";
        default -> "Invalid day";
    };
}

 

이 외에도 17에서는 Object 형 변환 없이 switch를 사용 가능합니다.

 

public String getShapeName(Object shape) {
    return switch (shape) {
        case Circle c -> "Circle";
        case Rectangle r -> "Rectangle";
        case Triangle t -> "Triangle";
        default -> "Unknown";
    };
}

 

switch는 많이 쓰이는 코드이니 17 도입 예정이라면 한번쯤 써보는 것도 좋을 듯 합니다. 

'IT-Language > IT-Java' 카테고리의 다른 글

JAVA - AOP (관점지향 프로그래밍)  (0) 2024.04.10
어노테이션(Annotation) - @Target  (0) 2023.11.30
어노테이션(Annotation) - @Retention  (0) 2023.11.30
java RuntimeException  (0) 2023.11.05
Java와 VC++ 동기화 비교  (0) 2023.11.05