此问题已在此处有答案:
How to get an enum value from a string value in Java(32个回答)
2天前关闭。
我有多个枚举类。比如说,
public class enum Animal {
DOG,
LION;
}
public class enum Bird {
OSTRICH,
CROW };
}
我想有一个Map<String,Enums >,我可以将这些枚举类存储为值,然后根据键获取它们。例如Map<String,Enumclass>,这样当我将键传递给Map时,它会给我Enum。例如,map.get(“Animal”)应该返回Animal枚举,然后我可以执行类似Animals.valueOf()的操作;
我能够将枚举存储在private Map<String, Class<? extends Enum>> Map;
中,但无法检索并将其转换回适当的枚举类。有可能做到这一点吗
4条答案
按热度按时间kninwzqo1#
你需要让你的枚举实现一个公共接口,如下所示:
如果你想要这些值,你可以使用通用的
Enum
类:xcitsw882#
我将提供另一种方法,向Enum添加另一个维度来指示Animal类型,在这种情况下,您不需要转换为多个Enum:
s4chpxco3#
似乎没有一个确切的解决方案,你正在寻找实现。
本质上,我认为既然一个 enum 被认为是一个 static 对象,你就不能把静态引用转换成一个新的对象。
您必须使用 Class 类型。
而且,在这种情况下,最好只使用 Enum 类。
下面是一个关于使用 enums 的Java反射的教程,用于此特定需求。
因为你知道你的map值将是 enum 对象,你可以使用 Enum#valueOf 方法来获得一个值。
如果你想要一个值列表,类似于 values 方法,你可以使用一个 Enum 数组,并利用 Class#getEnumConstants。
afdcj2ne4#
我通过反思找到了解决办法。它可以是这样的