アサーションを効果的に使用できるもう一つの例は、デフォルトの case を持たない switch 文です。
たとえば :
switch(suit) {
case Suit.CLUBS:
...
break;
case Suit.DIAMONDS:
...
break;
case Suit.HEARTS:
...
break;
case Suit.SPADES:
...
}
|
プログラマはおそらく、「上記 switch 文の 4 つの case のうちの 1 つが常に実行される」と仮定しています。この仮定をテストするには、次のようなデフォルトの case を追加します。
default:
assert false;
|
通常は、プログラマが「本来到達すべき場所ではない」と仮定している場所ならば、次の文はどこにでも置けるはずです。
assert false; |
たとえば、次のようなメソッドがあると仮定します。
void foo() {
for (...) {
if (...)
return;
}
// Execution should never reach this point!!!
}
|
最後のコメントを次のように変更します。
assert false; |
この技法を使用するときには十分に注意してください。ある文が到達不能である場合 (JLS 14.19 を参照)、その文が到達不能であることを表明しようとすると、コンパイル時にエラーが発生します。