我正在尝试存储和检索一个enum类,以便稍后可以找到正确的类型(基于配置)并对其调用ValueOf来解析字符串。如何放置/获取然后调用的值?
在伪代码中,它看起来像这样:
enum MyType { VAL1, VAL2 };
enum MyColors { BLUE, RED };
Map<String, Class> map = Maps.newHashMap();
map.put("key1", MyType.class); //this is the MyType enum above
map.put("colors", MyColors.class); //this is the MyColors enum above
...
String inputType = "colors";
String inputValue = "BLUE";
Class c = map.get(inputType);
assertEquals(MyColors.BLUE, c.ValueOf(inputValue)); //here I want MyColors.ValueOf() to get called
Class c2 = map.get("key1");
assertEquals(MyType.VAL1, c.ValueOf("VAL1")); //here I want MyType.ValueOf() to get called
我怎么能这样呢?
为了提供一些关于我为什么这样做的背景-我有多个这样的枚举类型,我得到一个输入,告诉我它是什么样的枚举(在文本中)和枚举中的一个值,所以我想从映射中查找枚举类,然后调用它的静态ValueOf,它将正确解析。
注意-我不想在映射中存储MyType对象,我想存储类引用
谢谢
public enum MyType {
VAL1("value1"),
VAL2("value2");
private valueString;
private enum MyType(String val) {
valueString = val;
}
@Override
public String toString() {
return valueString;
}
}
看起来您想使用字符串作为一个键,所以定义您的MyType枚举,然后设置和获取值:
Map<String, MyType> enumMap = new HashMap<String, MyType>();
enumMap.put("key", MyType.VAL1);
...
MyType keyVal = enumMap.get("key1");
String settingValue = keyVal.toString(); // will be "value1"
不要使用Class作为第二种类型,而是使用枚举的类型。
enum MyType { VAL1, VAL2 };
public static void main (String args[]){
Map<String,MyType> map = new HashMap<String,MyType>();
}
您可以使用java.lang.Enum。valueOf(类枚举类型,字符串名称)
enum MyType { VAL1, VAL2 };
Map enumMap = Maps.newHashMap();
map.put("key1", MyType.class);
...
Class c = map.get("key1");
assertEquals(MyType.VAL1, Enum.valueOf(c, "VAL1"));
我有一个,另一个作为参数 我想创建一个按类型返回的方法 通常我会写 用java stream写的最佳做法是什么?
问题内容: 在hibernate状态下,是否可以定义一个类到一组枚举的映射? 我已经找到了有关如何定义集合映射的示例,也已经找到了有关如何映射枚举的单独示例,但是我无法弄清楚如何为一个类定义枚举。 有人可以给我提供一个例子吗? 它是基于现有应用程序构建的,因此无法更改数据库架构。 这就是我要建模的关系。Wicket是普通类,而WicketType是Java枚举。 再次感谢 问题答案: 难道这不是你
问题内容: 假设我有这个枚举: 通过以下映射: 枚举被发送到数据库,,。我希望这些值改为存储为,或存储在varchar列中。 如何将枚举映射到varchar列? 问题答案: 将其添加为EnumType的参数: 这是因为等效于java.sql.Types.VARCHAR
问题内容: 我有以下枚举如何在jna中映射? 该枚举在结构上进一步引用。 阿卜杜勒·哈利克(Abdul Khaliq) 问题答案: 如果使用的是JNA,则可能要显式指定Java中的枚举值。默认情况下,Java的基本枚举类型并没有真正为您提供该功能,您必须为EnumSet添加一个构造函数(请参阅this和this)。 编码C枚举的一种简单方法是使用包装在与枚举同名的类中的公共静态最终const in
我有一个实体,有一个枚举类型字段和一个具有相同枚举类型和字段名的DTO。 我使用modelMapper创建一个新对象,不需要额外的配置。 但在将dto映射到实体对象后,实体对象上的性别为空。 对象有性别,我已经检查了很多。 请帮我理解这个问题。
我试图使用流API代替循环,并有以下问题。 我有一个方法,它接受一个Enum并返回一个SortedMap。我将每个映射存储在一个列表中,但是我现在希望将每个SortedMap存储在一个映射中,Enum名称为键,从返回的SortedMap作为值,如何使用流API执行此操作? 当前工作列表方法 我使用收集器的错误尝试。toMap。。 工作回路,工作回路