티스토리 뷰
Java 12, 13에서 2번의 Preview를 통해 강화된 Switch 표현식이 Java 14에서 표준화되었다.
기존 switch 구문
public class SwitchExpressionsExample {
public static void main(String[] args) {
SwitchExpressionsExample example = new SwitchExpressionsExample();
example.printDay(Day.FRI);
example.printDay(Day.TUE);
example.printDay(Day.SUN);
}
public void printDay(Day today) {
switch (today) {
case MON:
case TUE:
case WED:
case THUR:
case FRI:
System.out.println(today.name() + " is Weekday");
break;
case SAT:
case SUN:
System.out.println(today.name() + " is Weekend");
break;
}
}
enum Day {
MON, TUE, WED, THUR, FRI, SAT, SUN
}
}
- 'break'의 위치에 따라 실행 결과가 달라질 수 있기 때문에 개발자가 의도적으로 'break'를 했는지 실수인지 파악하기 어렵다.
강화된 switch 표현식
public void printDay(Day today) {
switch (today) {
case MON, TUE, WED, THUR, FRI -> System.out.println(today.name() + " is Weekday");
case SAT, SUN -> System.out.println(today.name() + " is Weekend");
}
}
- 여러 조건에 따라 ','로 구분해서 한 번에 처리할 수 있다.
- 단일 실행으로 '->'만 추가했지만, '{}' 형태로 구문을 만들 수 있다.
- '->' 대신 ':'을 사용해서 예전 방식으로 사용할 수도 있다.
반환값 받기
public String printDay(Day today) {
String result = switch (today) {
case MON, TUE, WED, THUR, FRI -> today.name() + " is Weekday";
case SAT, SUN -> today.name() + " is Weekend";
};
return result;
}
- 표현식으로 변경되었기 때문에 결과값을 반환 받는 형식으로 만들 수 있다.
- 반환값의 타입을 Object로 설정하게 되면 표현식마다 다른 자료형을 반환할 수도 있다.
- 반환값이 있을 때 표현식이 void를 반환하면 컴파일 에러가 발생한다.
반환값이 있는 표현식을 블록('{}') 구문으로 사용
public String printDay(Day today) {
String result = switch (today) {
case MON, TUE, WED, THUR, FRI -> today.name() + " is Weekday";
case SAT, SUN -> {
System.out.print("Holiday! ");
yield today.name() + " is Weekend";
}
};
return result;
}
- 'yield' 키워드를 사용해서 반환(java 13에서 변경된 내용으로 java 12를 사용한다면 'yield'대신 'break'를 사용하면 된다.)
- 'return' 키워드를 사용하면 컴파일 에러가 발생한다. (반환값이 없는 경우라면 return을 사용할 수도 있다.)
References
'프로그래밍 > Java' 카테고리의 다른 글
[Stream API] 중간 연산 - distinct 메서드 (0) | 2020.12.31 |
---|---|
[Stream API] 중간 연산 - filter 메서드 (2) | 2020.12.30 |
Intellij IDEA에서 Gradle을 사용해 Java Preview 버전의 코드 테스트하기. (0) | 2020.10.28 |
[Java 14] Helpful NullPointerExceptions (0) | 2020.08.12 |
Vector 클래스와 ArrayList 클래스 (0) | 2018.02.06 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- 회고
- #배열 #array #map 함수
- 익명 클래스
- modern java
- jdk14
- 자바
- 스트림
- flatMapToLong
- Stream API
- java14
- 목표
- #예제 #example #가계부 #Account Book
- flatMapToInt
- 람다
- 개발자
- 토이 프로젝트
- import문
- mapToObj
- #React #ReactJS #리액트
- lambda
- 변경사항
- Java8
- 중간 연산
- flatMapToDouble
- 계획
- 충북 콕! 콕!
- flaMap
- IntelliJ
- 다짐
- java
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
글 보관함