본문 바로가기
Java

자바 17

by AlbertIm 2024. 12. 4.

시작

자바 17의 새로운 기능을 정리하고자 합니다.

본문

1. Text Blocks

"""로 시작하고 끝나는 여러 줄의 문자열을 표현하는 방법입니다.

String SQL = """
    SELECT *
    FROM table
    WHERE column = 'value'
    """;

2. switch 문

switch 문에 새로운 문법이 추가되었습니다. case 문에서 ,를 사용하여 여러 값을 한 번에 처리할 수 있습니다. 또한 ->를 사용하여 switch 문을 표현할 수 있습니다.

before

    public enum DayOfWeek {
        MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY
    }
    var random = new Random();
    var day = DayOfWeek.values()[random.nextInt(DayOfWeek.values().length)];
    String result = null;
    switch (day) {
        case MONDAY:
        case TUESDAY:
        case WEDNESDAY:
        case THURSDAY:
        case FRIDAY:
            result = work();
            break;
        case SATURDAY:
        case SUNDAY:
            result = rest();
            break;
        default:
            throw new IllegalArgumentException("Invalid day: " + day);
    }
    System.out.println(result);

after

    var random = new Random();
    var day = Character.charCount(random.nextInt(7));
    String result = switch (day) {
        case MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY -> work();
        case SATURDAY, SUNDAY -> rest();
    };
    System.out.println(result);

3. record

record는 데이터를 저장하는 데 사용되는 클래스입니다. recordfinal 클래스이며, final 필드를 가지며 getter 메서드를 가지며, equals(), hashCode(),toString() 메서드를 가지며, record를 사용하는 클래스에서 record의 필드를 수정할 수 없습니다.

    record Person(String name, int age) {
    }

    var person = new Person("John", 30);
    var name = person.name();
    var age = person.age();

    assert person.equals(new Person("John", 30));

4. sealed class

sealed class는 상속을 제한하는 클래스입니다. sealed classpermits 키워드를 사용하여 상속을 허용하는 클래스를 지정할 수 있습니다.

sealed interface LoginResponse permits AccessToken, Tokens {
}

record AccessToken(String token) implements LoginResponse {
}

record Tokens(String accessToken, String refreshToken) implements LoginResponse {
}

마무리

자바 17의 새로운 기능을 정리했습니다. 이러한 기능들은 자바 17을 사용하는 것을 더욱 편리하게 만들어줍니다.

참조

'Java' 카테고리의 다른 글

성능 튜닝의 중요성  (2) 2024.12.15
자바 동시성 기초  (1) 2024.12.14
클래스 로딩  (1) 2024.12.05
자바 모듈  (1) 2024.12.04
자바 11에서의 작은 변경 사항  (0) 2024.12.02

댓글