ホームページ > Java > &#&チュートリアル > Java Switch ステートメントに Case ラベルの定数式が必要なのはなぜですか?

Java Switch ステートメントに Case ラベルの定数式が必要なのはなぜですか?

Barbara Streisand
リリース: 2024-12-06 16:45:14
オリジナル
177 人が閲覧しました

Why Do Java Switch Statements Require Constant Expressions for Case Labels?

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート