블로그 Help

자바 17

시작

자바 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을 사용하는 것을 더욱 편리하게 만들어줍니다.

참조

Last modified: 08 December 2024