3

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

int byteOrder = ...;
switch (byteOrder)
{
    case HDF5Constants.H5T_ORDER_BE:
        return ByteOrder.BIG_ENDIAN;
    ...
}

错误出现在 case 语句上,Eclipse 抱怨“case 表达式必须是常量表达式”。我查看了源文件,它有一长串像这样的行:

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

我认为您可以final public static int在 switch 语句中使用常量作为案例。我错了吗???

4

2 回答 2

10

从您所展示的内容来看,H5T_ORDER_BE它不是编译时常量(它必须是) - 它是在类初始化期间在运行时评估的。如果它评估为一个常量,例如123(而不是看似静态的方法调用),那么编译器不会抱怨。

于 2009-07-20T19:25:49.173 回答
7

了!:-)

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

于 2009-07-20T19:24:43.140 回答