java - 无法在 Java 中使用枚举(错误 :Can't find symbol)

标签 java enums subclass

所以我有一个类文件,其中只有我的枚举,如下所示

public class FactionNames {
    public enum Faction {AMITY, ABNEGATION, DAUNTLESS, ERUDITE, CANDOR};
}

我有一个类在构造函数中使用这些枚举,如下所示

public Dauntless(String f, String l, int a,  int ag, int end, Faction d) {
        super(f, l, a, d);
        if (ag >= 0 && ag <= 10) {
            this.agility = ag;
        } else {
            this.agility = 0;
        }
        if (end >= 0 && end <= 10) {
            this.endurance = end;
        } else {
            this.endurance = 0;
        }
    }

因此,为了确保此类中的所有内容正常工作,我想在驱动程序中创建一些 Dauntless 对象,但我不断收到这些错误

D:\Documents\Google Drive\Homework\1331
Test.java:3: error: cannot find symbol
        Faction test;
        ^
  symbol:   class Faction
  location: class Test
Test.java:4: error: cannot find symbol
        test = Faction.DAUNTLESS;
               ^
  symbol:   variable Faction
  location: class Test
2 errors 

我正在使用如下所示的驱动程序。我的语法有问题吗?我不明白为什么我会收到这个错误。

public class Test {
    public static void main(String[] args) {
        Faction test; 
        test = Faction.DAUNTLESS;
        Dauntless joe = new Dauntless("Joseph", "Hooper", 20, 5, 3, test);
        Dauntless vik = new Dauntless("Victoria", "Ward", 19, 6, 2, test);
        Dauntless winner;
        winner = joe.battle(vik);
        System.out.println(winner);

    }
}

最佳答案

enum 类型 Faction 嵌套在顶级类 FactionNames 中。

public class FactionNames {
    public enum Faction {AMITY, ABNEGATION, DAUNTLESS, ERUDITE, CANDOR};
}

如果您想使用其简单名称,则需要导入它

import com.example.FactionNames.Faction;

或者,您可以使用其限定名称

FactionNames.Faction test = FactionNames.Faction.DAUNTLESS;

关于java - 无法在 Java 中使用枚举(错误 :Can't find symbol),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28845475/

相关文章:

java - java中类型不匹配?

java - 递归回调虚拟方法

java - 选择状态微调器后填充城市微调器

objective-c - Objective-C : Compare two enum types not working

c++ - C 与 C++ 中枚举的范围

当我创建一个对象时,java 子类?

python - Python 中带有子类的单例

java - TreeSet 给出不正确的输出 - Java8

java - 如何修复 java.lang.UnsupportedClassVersionError : Unsupported major. 次要版本

java - 返回与字符串参数同名的枚举是什么意思?