1. ホーム
  2. Java

switch case文のcaseの後の列挙定数は列挙型なし

2022-02-16 16:40:06
<パス

列挙型を使用しないswitch case文の場合の列挙定数

列挙型がないswitch case文の場合の後の列挙定数

enum 型を定義する

public enum Day
{
    SUNDAY, MONDAY, TUESDAY, WEDNESDAY,THURSDAY, FRIDAY, SATURDAY
}


スイッチケース分岐を行う場合

switch (day)
{
    case Day.MONDAY:
        .....
        break;


エラー報告、enum switch case label must be an unqualified name of an enumeration constant
ヒント:MONDAYの前の列挙型を削除する必要があります。

switch (day)
{
    case MONDAY:
        ......
        break;


java では、列挙定数には case の後に非限定的な名前しか使えないこと、列挙の型は switch の後に指定すること、case の後にフルネームは必要ないこと、enum には継承関係がないこと、が規定されています。

switch文のExpressionの型がenum型の場合、switch文に関連するすべてのcase定数は、その型のenum定数でなければならない。

から http://docs.oracle.com/javase/specs/jls/se8/html/jls-14.html#jls-14.11

case switch ラベルの enum 値は非限定名である必要があります。これは switch() 節のオブジェクトの型からコンテキストを継承しており、ケースは単純に非限定的な名前を使用することができます。

から http://www.xyzws.com/javafaq/can-i-use-an-enum-type-in-java-switch-statement/130