簡體   English   中英

最終的public static int不能在switch語句中使用?

[英]final public static ints can't be used in a switch statement?

我糊塗了。 以下代碼有錯誤(“...”代表省略代碼):

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 constants作為switch語句中的case。 我錯了嗎???

根據您的顯示, H5T_ORDER_BE不是編譯時常量(它需要) - 它在類的初始化期間在運行時進行評估。 如果它計算為常量(如123 (而不是看起來像是靜態方法調用),那么編譯器就不會抱怨。

錯了! :-)

case語句只能引用常量。 靜態變量在運行時初始化,因此不能在此處使用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM