考虑下面的内部Enum
实现一个接口(interface):
public interface NotificationTypes {
public enum CONTACT_LIST implements NotificationTypes{
ADDED("CONTACT_LIST-ADDED"),
REMOVED("CONTACT_LIST-REMOVED");
public enum INVITATION implements NotificationTypes{
ACCEPTED("CONTACT_LIST-INVITATION-ACCEPTED"),
REJECTED("CONTACT_LIST-INVITATION-REJECTED");
String name = "";
private INVITATION(String name){
this.name = name;
}
public String getName(){
return name;
}
};
String name = "";
private CONTACT_LIST(String name){
this.name = name;
}
public String getName(){
return name;
}
}
public String getName();
}
现在考虑数据库/mongodb 中的数据以 NotificationTypes
的 String
形式存储在表/文档中。
{
"_id" : ObjectId("59882ba49e5d82c72ba44fde"),
"template" : "Contact list Invitation accepted by your friend",
"type" : "CONTACT_LIST-INVITATION-ACCEPTED"
}
所以我的问题是:如何在运行时将该字符串转换回特定枚举而不确切知道要映射的枚举名称?
域类如下所示:
@Document(collection = CollectionNames.XXX_TEMPLATE)
public class XXXTemplate {
private NotificationTypes type;
//Other parameters, getters & setters + Constructor
}
最佳答案
我会构建一个Map<String, NotificationTypes>
并用您拥有的所有实例填充它。然后您可以从该 map 查找。
我不认为编译器可以帮助你保持同步,除了你可以循环 EnumType.values()
(但您必须记住对所有枚举类型执行此操作)。
关于Java - 如何将字符串转换为实现接口(interface)的特定枚举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45543939/