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"; } }
case 标签上的编译器错误,因为 Foo.BAR、Foo.BAZ 和 Foo.BAM 不被视为常量表达式。虽然它们在类中被声明为常量,但它们并未使用特定值进行初始化。常量表达式需要一个可以在编译时计算的值,例如使用编译时常量初始化的文字或最终变量。
要解决此问题,可以使用以下方式初始化 Foo.BAR 常量编译时常量值:
public abstract class Foo { public static final int BAR = 1; public static final int BAZ = 2; public static final int BAM = 3; }
这将允许 switch 语句成功编译,因为 case 标签现在将被评估为常量
或者,可以将常量声明为枚举,从而允许更简洁的代码和更强类型的常量。但是,枚举有一定的限制,例如需要默认大小写和特定枚举值作为大小写标签。
以上是为什么 Java Switch 语句需要常量表达式作为 Case 标签?的详细内容。更多信息请关注PHP中文网其他相关文章!