Java Switch ステートメント: 定数式の要件
Java で switch ステートメントを使用する場合、case ラベルは定数式である必要があります。これは、式がコンパイル時に既知である必要があることを意味します。指定されたコード:
public static String lookup(int constant) { switch (constant) { case Foo.BAR: return "bar"; case Foo.BAZ: return "baz"; case Foo.BAM: return "bam"; default: return "unknown"; } }
Foo.BAR、Foo.BAZ、および Foo.BAM は定数式とみなされないため、case ラベルでコンパイラ エラーが発生します。これらはクラス内で定数として宣言されますが、特定の値で初期化されません。定数式には、リテラルやコンパイル時定数で初期化された最終変数など、コンパイル時に評価できる値が必要です。
この問題を解決するには、Foo.BAR 定数を次のように初期化できます。コンパイル時定数値:
public abstract class Foo { public static final int BAR = 1; public static final int BAZ = 2; public static final int BAM = 3; }
これにより、case ラベルが定数として評価されるため、switch ステートメントが正常にコンパイルできるようになります。式.
または、定数を列挙型として宣言することもでき、よりクリーンなコードとより厳密に型指定された定数が可能になります。ただし、列挙型には、デフォルトのケースやケース ラベルとして特定の列挙値を必要とするなど、特定の制限があります。
以上がJava Switch ステートメントに Case ラベルの定数式が必要なのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。