JDK 14 새로운 기능 의 switch 표현 식 구현
switch 의 새로운 기능 은 유구 한 역 사 를 가지 고 있 습 니 다.JDK 12 에서 미리 보기 기능 으로 도입 되 었 고 최종 적 으로 JDK 14 에서 정식 버 전의 기능 이 되 었 습 니 다.JEP 361:Switch Expressions(Standard).
사실 Switch 에 추 가 된 기능 은 두 가지 가 있 습 니 다.하 나 는 case 를 연결 할 수 있 고 하 나 는 switch 가 값 을 되 돌려 줄 수 있 습 니 다.
앞 에 쓰다
switch 라 는 이름 의 패 키 지 를 만 들 려 고 흥 이 났 을 때 갑자기 IDEA 에서 자바 류 를 만 들 지 않 았 다 는 것 을 알 게 되 었 습 니 다.
나의 거듭 된 시 도 를 통 해 이름 을 바 꾸 었 는데 마침내 나 에 게 숨겨 진 작은 비밀 이 발견 되 었 다.
자바 키 워드 는 패키지 이름 에 사용 할 수 없습니다.그래,그동안 패키지 의 이름 이 그렇게 많 았 는데,지금 은 바람 을 쐬 는 규칙 을 만 들 려 고 하 는데,이런 규칙 이 있다 는 것 을 알 게 되 었 다.
그럼 자바 키 워드 는 어떤 게 있 나 요?다음은 됐어.
연서 케이스
먼저 오래된 버 전의 예 를 보 세 요.
@Test
public void useOldSwitch(){
switch (MONDAY) {
case MONDAY:
case FRIDAY:
case SUNDAY:
System.out.println(6);
break;
case TUESDAY:
System.out.println(7);
break;
case THURSDAY:
case SATURDAY:
System.out.println(8);
break;
case WEDNESDAY:
System.out.println(9);
break;
}
}
위의 예 에서 우 리 는 모든 주 에 맞 게 결 과 를 출력 하고 싶 습 니 다.케이스 문 구 를 많이 써 서 보기 좋 지 않 습 니 다.새 버 전의 예 를 다시 봅 시다.
@Test
public void useNewSwitch(){
switch (MONDAY) {
case MONDAY, FRIDAY, SUNDAY -> System.out.println(6);
case TUESDAY -> System.out.println(7);
case THURSDAY, SATURDAY -> System.out.println(8);
case WEDNESDAY -> System.out.println(9);
}
}
아름 다운 연작 으로 모든 것 을 가 져 간다.여기 switch 문 구 는 반환 값 이 없 기 때문에 default 문 구 는 필요 하지 않 습 니 다.
switch 반환 값
switch 에서 값 을 부여 하 는 상황 을 고려 합 니 다:
@Test
public void oldSwitchWithReturnValue(){
int numLetters;
switch (MONDAY) {
case MONDAY:
case FRIDAY:
case SUNDAY:
numLetters = 6;
break;
case TUESDAY:
numLetters = 7;
break;
case THURSDAY:
case SATURDAY:
numLetters = 8;
break;
case WEDNESDAY:
numLetters = 9;
break;
default:
throw new IllegalStateException(" !");
}
}
전통 적 인 방식 으로 우 리 는 국부 변 수 를 정의 하고 case 에서 이 국부 변수 에 값 을 부여 해 야 한다.새 버 전의 switch 를 어떻게 사용 하 는 지 봅 시다.
@Test
public void newSwitchWithReturnValue(){
int numLetters = switch (MONDAY) {
case MONDAY, FRIDAY, SUNDAY -> 6;
case TUESDAY -> 7;
case THURSDAY, SATURDAY -> 8;
case WEDNESDAY -> 9;
default -> throw new IllegalStateException(" !");
};
}
아주 간단 하 죠?여기에 default 작업 이 필요 합 니 다.그렇지 않 으 면 컴 파일 오류 가 발생 할 수 있 습 니 다.옮 겨 다 니 지 않 은 값 이 있 을 수 있 기 때문이다.
yield
위의 switch 가 값 을 되 돌려 주 는 경우 케이스 뒤의 표현 식 이 복잡 하 다 면 괄호 로 둘 러 야 합 니 다.이러한 상황 에서 우 리 는 yield 를 사용 하여 되 돌 릴 값 을 되 돌려 야 한다.
@Test
public void withYield(){
int result = switch (MONDAY) {
case MONDAY: {
yield 1;
}
case TUESDAY: {
yield 2;
}
default: {
System.out.println(" MONDAY, TUESDAY!");
yield 0;
}
};
}
1.case L->탭 은 관통 기능 을 없 앴 습 니 다.case 뒤의 상수 는 쉼표 로 여러 상수 로 나 눌 수 있 습 니 다.코드 보기
public class SwitchTest {
public static void main(String[] args) {
Weekday day = Weekday.MON; //
//case L:
switch (day){// break;
case MON, TUE, WEN -> {
System.out.println(" ");
String s = "abc"; //
}
case THU, FRI -> {
System.out.println(" ");
String s = "def";
}
case SAT, SUN -> {
System.out.println(" ");
}
}
System.out.println("12");
}
//
enum Weekday{
MON,TUE,WEN,THU,FRI,SAT,SUN
}
실행 결과:전반 주
12
2.JDK 14 에서 switch 를 확장 하여 표현 식 으로 할당 하거나 인쇄 할 수 있 습 니 다.
public class SwitchTest {
public static void main(String[] args) {
Weekday day = Weekday.MON; //
//JDK14 switch
//
System.out.println(switch(day){
case MON, TUE, WEN -> " ";
case THU, FRI -> " ";
case SAT, SUN -> " ";
});
//
String text = switch(day){
case MON, TUE, WEN -> " ";
case THU, FRI -> " ";
case SAT, SUN -> " ";
};
// yield
day = Weekday.SAT;
int x = switch(day){
case MON, TUE, WEN -> 1;
case THU, FRI -> 2;
case SAT, SUN -> {
int rnd = (int)(Math.random()*10); // (0,10)
System.out.println("rnd = " + rnd);
yield rnd; // yield
};
};
System.out.println("x = " + x);
}
}
//
enum Weekday{
MON,TUE,WEN,THU,FRI,SAT,SUN
}
총결산본 고 는 JDK 14 의 switch 새로운 특성 을 소개 한다.유일한 정식 버 전의 새로운 특성 이기 도 하고...
본문의 예 https://github.com/ddean2009/learn-java-base-9-to-20
JDK 14 의 새로운 기능 을 가 진 switch 표현 식 의 실현 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 JDK 14 switch 표현 식 내용 은 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 도 많은 응원 부 탁 드 리 겠 습 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Unity의 Switch Pro 컨트롤러 버튼 번호 치트 시트Sadmachine입니다. Unity에서 Switch의 Pro 컨트롤러를 사용하고 싶었고 을 사용하여 Pro 컨트롤의 버튼 번호를 확인해 보았습니다. 이미지 출처 : Nintendo 공식 HP 버튼 번호 Positi...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.