Java 最终公共静态INT可以';不能在switch语句中使用?

Java 最终公共静态INT可以';不能在switch语句中使用?,java,switch-statement,case,Java,Switch Statement,Case,我很困惑。以下代码有错误(“…”表示省略的代码): 错误出现在case语句上,Eclipse抱怨“case表达式必须是常量表达式”。我在源文件中查找了这一行,它有一个很长的行列表,如下所示: final public static int H5T_ORDER_BE = H5.J2C( JH5T_ORDER_BE ); 我认为可以在switch语句中使用final public static int常量作为实例。我错了吗?你错了!:-) Case语句只能引用常量。静态变量是在运行时初始化的,因此

我很困惑。以下代码有错误(“…”表示省略的代码):

错误出现在case语句上,Eclipse抱怨“case表达式必须是常量表达式”。我在源文件中查找了这一行,它有一个很长的行列表,如下所示:

final public static int H5T_ORDER_BE = H5.J2C( JH5T_ORDER_BE );
我认为可以在switch语句中使用
final public static int
常量作为实例。我错了吗?

你错了!:-)


Case语句只能引用常量。静态变量是在运行时初始化的,因此不能在这里使用。

根据您所展示的
H5T\u ORDER\u be
不是编译时常量(需要),它是在初始化类的过程中在运行时计算的。如果它的计算结果是一个常量,比如
123
(而不是一个静态方法调用),那么编译器不会抱怨

final public static int H5T_ORDER_BE = H5.J2C( JH5T_ORDER_BE );