我想从枚举类型本身内检索枚举类型的名称:的Java枚举类型名称反射
enum Mammals {
DOG(new Dog()),
CAT(new Cat());
public String alias;
Mammals(AncestorOfDogAndCat a){
this.alias=this.getClass().getName().toLowerCase();
System.out.println(alias);
}
}
当我如他们,我得到
Main$mammals
Main$mammals
但我想
dog
cat
你没有传递构造函数的参数,但我可以看到每个枚举常量都有值。为什么? – atiqkhaled
@atiqkhaled对不起,我删除了一些不必要的代码,但留下了一些垃圾 – michelemarcon
我不明白为什么你需要通过狗实例,如果你不使用或存储它。有几个答案已经依赖于'name()'方法,但是如果你需要实例,你只需调用它的'toString'方法?这将使打印依赖于dog/cat实例,而不是枚举类型名称。 –