2010-05-25 47 views
1

我得到一個「無法解析」錯誤,當我嘗試這樣做:Java枚舉,靜態類變量 - 爲什麼我不能這樣做?

class Tag{ 
    public static final int blah = 1231; 
} 

enum Things{ 
    COOL (Tag.blah, "blah"); //error here 
} 

編譯器抱怨說,它無法找到標籤類上線。

+4

在東西中添加了一個合適的構造函數(接受一個int和一個字符串),它對我來說編譯得很好......它可能是你的環境中的東西,而你對此沒有提及。 – 2010-05-25 15:12:01

回答

0

事實證明,我的錯誤只是愚蠢的。

我指的是一個不存在的成員變量(blah)!所以它不是解決Tag.blah

1

以下完成EnumTest.java文件的編譯。我不確定你的問題是什麼;沒有足夠的信息。

public class EnumTest { 
    class Boo { 
     static final int x = 42; 
    } 
    enum Things { 
     X(Boo.x); 
     Things(int x) { } 
    } 
} 
+0

hm ..如果Boo不是一個內部靜態類... – drozzy 2010-05-25 15:14:34

+0

@drozzy:如果它是可見的,那很好。 'enum'和'static'類變量沒有什麼特別之處。試試'import static Tag.blah;'看看你是否能從'Things'看到'Tag'。 – polygenelubricants 2010-05-25 15:15:28

+0

對不起我的錯誤...看到更新。不知道該怎麼處理這個問題...不能刪除它。 – drozzy 2010-05-25 15:18:59

3

可見性可能是這裏的錯誤。你的類標籤有默認的可見性,所以我猜你的枚舉不在同一個包中。使用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) { 
    } 
} 
0

你有沒有定義的COOL枚舉的構造函數?您正在傳遞參數,但默認的構造函數不接受任何參數。

相關問題