9. Class Data Sharing の歴史
• 2004 Class Data Sharing - JDK 5
• 2015 Application Class Data Sharing - JDK 8u40 and JDK 9
(Closed Source)
• 2018 JEP 310: Application Class Data Sharing - JDK 10 (Open
Source)
61. スコープの問題
switch (day) {
case MONDAY:
case TUESDAY:
int temp = ... // temp のスコープは ‘}’ まで続く
break;
case WEDNESDAY:
case THURSDAY:
int temp2 = ... // temp を再利用出来ず
break;
default:
int temp3 = ... // temp を再利用出来ず
}
62. フォールスルー
• C / C++ のまま利用されました
• システムプログラミングで役に立つユースケースはある
• よりハイレベルだと、ユースケースはあまりない
• break 文を忘れるバグが非常に多い
• break 文のせいでコードが読みにくくなる
63. int numLetters;
switch (day) {
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("Wa
t: " + day);
}
64. int numLetters;
switch (day) {
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("Wa
t: " + day);
}
76. yield キーワード
int result = switch (s) {
case "Foo":
yield 1;
case "Bar":
yield 2;
default:
System.out.println("Neither Foo nor Bar,
hmmm...");
yield 0;
};
79. 値を返す必要性
int i = switch (day) {
case MONDAY -> {
System.out.println("Monday");
// ダメ!Yield がない
}
default -> 1;
};
80. 値を返す必要性
int i = switch (day) {
case MONDAY, TUESDAY, WEDNESDAY:
yield 0;
default:
System.out.println("Second half of the
week");
// ダメ! yield がない!
};