Constant expression required
时间: 2023-07-28 20:22:43 浏览: 53
"Constant expression required" 是指在代码中使用了非常量的表达式,但是该表达式需要在编译期间就能够确定其值,即必须是常量表达式。
常见的常量表达式包括字面量、final 修饰的变量、枚举常量等。而不能用于常量表达式的包括非 final 修饰的变量、方法调用、非静态成员访问等。
例如,下面这段代码会报 "Constant expression required" 错误:
```java
int x = 2;
switch (x) {
case 1:
// do something
break;
case 1 + 1:
// do something
break;
default:
// do something
break;
}
```
因为在 switch 语句中,case 后面的表达式必须是常量表达式,而这里的 1+1 不是常量表达式,因为其中包含了一个非常量的加法运算。
解决方法是将表达式改为常量表达式,例如:
```java
final int x = 2;
switch (x) {
case 1:
// do something
break;
case 2:
// do something
break;
default:
// do something
break;
}
```
这里将 x 定义为 final 变量,使其变成了常量表达式,就可以在 switch 语句中使用了。