시작
자바 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
는 데이터를 저장하는 데 사용되는 클래스입니다. record
는 final
클래스이며, 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 class
는 permits
키워드를 사용하여 상속을 허용하는 클래스를 지정할 수 있습니다.
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 |
댓글