Java枚举,静态类变量 - 为什么我不能这样做?

时间:2010-05-25 15:08:54

标签: java enums

尝试执行此操作时出现“无法解决”错误:

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

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

编译器抱怨它无法在上面的行中找到Tag类。

4 个答案:

答案 0 :(得分: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) {
    }
}

答案 1 :(得分:1)

以下完整的EnumTest.java文件编译。我不确定你的问题是什么;没有足够的信息。

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

答案 2 :(得分:0)

您是否定义了COOL枚举的构造函数?您正在传递参数,但默认构造函数不接受任何参数。

答案 3 :(得分:0)

事实证明,错误只是我的愚蠢。

我指的是一个不存在的成员变量,(上面例子中的 blah )!所以它没有解决 Tag.blah