我得到一個「無法解析」錯誤,當我嘗試這樣做:Java枚舉,靜態類變量 - 爲什麼我不能這樣做?
class Tag{
public static final int blah = 1231;
}
enum Things{
COOL (Tag.blah, "blah"); //error here
}
編譯器抱怨說,它無法找到標籤類上線。
我得到一個「無法解析」錯誤,當我嘗試這樣做:Java枚舉,靜態類變量 - 爲什麼我不能這樣做?
class Tag{
public static final int blah = 1231;
}
enum Things{
COOL (Tag.blah, "blah"); //error here
}
編譯器抱怨說,它無法找到標籤類上線。
事實證明,我的錯誤只是愚蠢的。
我指的是一個不存在的成員變量(blah)!所以它不是解決Tag.blah!
以下完成EnumTest.java
文件的編譯。我不確定你的問題是什麼;沒有足夠的信息。
public class EnumTest {
class Boo {
static final int x = 42;
}
enum Things {
X(Boo.x);
Things(int x) { }
}
}
hm ..如果Boo不是一個內部靜態類... – drozzy 2010-05-25 15:14:34
@drozzy:如果它是可見的,那很好。 'enum'和'static'類變量沒有什麼特別之處。試試'import static Tag.blah;'看看你是否能從'Things'看到'Tag'。 – polygenelubricants 2010-05-25 15:15:28
對不起我的錯誤...看到更新。不知道該怎麼處理這個問題...不能刪除它。 – drozzy 2010-05-25 15:18:59
可見性可能是這裏的錯誤。你的類標籤有默認的可見性,所以我猜你的枚舉不在同一個包中。使用public class Tag
編輯:
這個彙集了來自一個共同的外部類中:
class Tag {
public static final int blah = 1231;
}
enum Things {
COOL(Tag.blah, "blah"); // error here
private Things(final int i, final String s) {
}
}
你有沒有定義的COOL枚舉的構造函數?您正在傳遞參數,但默認的構造函數不接受任何參數。
在東西中添加了一個合適的構造函數(接受一個int和一個字符串),它對我來說編譯得很好......它可能是你的環境中的東西,而你對此沒有提及。 – 2010-05-25 15:12:01