[英]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.