昨夜のSCJP認定を読んだ後、switchステートメントと式の評価方法について考えましたが、少し戸惑いました。
Javaではブール値をオンにできないため、以下はコンパイルされません。
public static void switchOnBoolean(boolean theBool)
{
System.out.println("\n\nAssessing boolean :" + theBool);
// line below won't compile, since booleans are not valid for the switch statement
switch(theBool)
{
case true:
{
System.out.println("The boolean was true");
break;
}
case false:
{
System.out.println("The boolean was false");
}
}
}
ただし、次のようなケースブロックでブール値に評価される式を使用しようとしても、コンパイラは文句を言いません。
public static void switchOnChar(char theChar)
{
System.out.println("\n\nAssessing char : " + theChar);
switch(theChar)
{
case 'a':
{
System.out.println("The char was a");
break;
}
case 'b':
{
System.out.println("The char was b");
break;
}
case ('c' | 'd'):
{
System.out.println("The char was c or d");
break;
}
default:
{
System.out.println("The char didn't match anything, must be something else");
}
}
}
('c' | 'd')
最終的には、ブール値と評価される可能性があるため、このケースに入ることができません...
だから私の質問は:
- なぜのようなものを使用することが合法
('c' | 'd')
ですか? - 到達できないので、どうしてそれが役立つのでしょうか。
- 複数の値をケースに入れたいが、デフォルトを使用しない場合、if-elseステートメントとして再実装する唯一の選択肢はありますか?