java - 编译错误 "cannot find symbol - class ENUM_NAME"

标签 java enums

我定义了一个枚举。当我尝试写时:

private ENUM_NAME variableName;

作为类的实例变量,编译器告诉我:

cannot find symbol - class ENUM_NAME

这阻止了我继续。

我正在使用 BlueJ IDE,如果这很重要的话。 所有文件都包含在一个包中,并且位于我的计算机上的同一文件夹中。 我从另一个类(我的工作类的测试驱动程序)内的枚举开始,我在我的工作类中得到了所述错误。然后我尝试让枚举成为它自己的类,但我得到了同样的错误。

测试驱动程序类:

public class BicycleMainClass
{
    enum BICYCLE_TYPE_ENUM {STANDARD, RACER, MOUNTAIN, BMX};
    //main method below
}

“工作”阶层:

public class BicycleClass
{
    private BICYCLE_TYPE_ENUM bicycleType;
    //this line gives me the error "cannot find symbol - class BICYCLE_TYPE_ENUM"
}

我希望它能够正确编译,因为枚举是有效的变量类型。我不明白什么?

最佳答案

问题是您已将枚举类型声明为 nested type BicycleMainClass,因此在引用它时需要包含外部类型:

class BicycleClass
{
    private BicycleMainClass.BICYCLE_TYPE_ENUM bicycleType;
}

另一个解决方案是将您的枚举类型声明为 top-level type :

public enum BICYCLE_TYPE_ENUM {
    STANDARD, RACER, MOUNTAIN, BMX;
}

然后就可以直接引用了:

private BICYCLE_TYPE_ENUM bicycleType;

关于java - 编译错误 "cannot find symbol - class ENUM_NAME",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56891994/

相关文章:

java - Dropwizard:无法解析配置:logging.appenders

java - 如何在单击按钮而不清除现有行的情况下将新行从数据库添加到 jTable

java - Jaudiotagger getAll(FieldKey.COMMENT) 生成一个由 0 和 1 组成的数组

enums - 如何将 7 的原始值强制转换为 UIViewAnimationCurve 枚举?

c# - (C#) 枚举不会返回 int

Java GUI如何像MSN Messenger一样弹出消息窗口

java - 如何在 Java 中创建 2 维 ArrayList 并为其设置值?

c - 如何在决策 switch 语句中使用枚举

php - 使用 Codeigniter 迁移和 DBFORGE 在 POSTGRESQL 中创建 ENUM

c# - 尝试在 C# 中将枚举 system.array 转换为枚举 List<T>