次のパターンの Java コードがあります。
enum Foo
{
ORANGE, APPLE, BANANA
}
Foo bar()
{
switch(calcValue())
{
case "orange": return ORANGE;
case "apple": return APPLE;
case "banana": return BANANA;
}
}
メソッドの設計により、switch ステートメントがチェックする 3 つの文字列以外は何もcalcValue
返されないことが保証されます。3 つの文字列のいずれも返すことができない場合は、例外がスローされます。これは、不足しているキーワードが不要である可能性があり、デフォルトのスイッチ動作がトリガーされないことを意味します。したがって、省略されます。ただし、Java は当然のことながら (そして当然のことながら、一般的には)、(常に) 値を返さなければならないと文句を言います。デフォルトで例外をスローすることを考えていましたが、前述のように既に例外がスローされています。私は主に、この小さな問題を解決するためのシンプルで効率的な (最小限のランタイム チェックとコードを含む) 設計を求めています。2 つの例外をスローしたくありません。default
default
bar
calcValue
calcValue
私の支配下にないので、私はそれをどうすることもできません。
ここで自分自身を十分に説明したことを願っています。そうでない場合は、明確にするために最善を尽くします。本質的に、これは、スイッチのデフォルトが適用されないことがわかっている値を持つメソッドを設計することに関するものです。if-then-else-if-then-else-...-then-else
これは、ステートメント パターンにも適用される場合があります。