スイッチのケースで列挙型の値を文字列として使用できないのはなぜですか? (またはこの:)スイッチのケースで列挙型の文字列表現を使用する
String argument;
switch (argument) {
case MyEnum.VALUE1.toString(): // Isn't this equal to "VALUE1" ?
// something
break;
case MyEnum.VALUE2.toString():
// something else
break;
重要なことは、 'VALUE1'は静的なことです。あなたは自分の 'myValueOf()'を持つことができ、それでも動作します。 –
くそー、 'valueOf()'は 'case'に全くありません。私はその前のコメントを削除している、それを見ることはできません。再度、感謝します。 – Bloke
引数が有効でない場合、NPEとIllegalArgumentExceptionをスローするvalueOf()に注意してください。 Blokeのコードは、これらの例外を処理するのを避けるために理にかなっています(しかし、残念ながらうまくいきません)。 – Nereis