使用Java 8,我有一个Map,我需要转换为另一个Map替换键名,有时替换值.例如,当它们变成枚举时,我需要将这些枚举转换为其他常量(字符串,有时是整数).我不想比较字符串,即theEnum.name()由于可能的重复,但更喜欢将对象转换为枚举并打开它.但是,我找不到将Object转换为可切换枚举的方法.Enum.valueOf不返回可以打开的东西(参见下面的例子).
private void put(String key, Object value) {
if (value != null && value.getClass().isEnum()) {
Enum<?> val = (Enum<?>)value;
/* The below line has the following problem:
* Cannot switch on a value of type Enum.
* Only convertible int values, strings or enum variables are
* permitted */
switch (Enum.valueOf(val.getClass(), val.name())) {
case EmploymentType.FULL_TIME_EMPLOYEE : value = "Fast anställd";
break;
case ResidenceType.TENANCY : value = "Hyresrätt";
break;
default : break;
}
}
map.put(key, value); …Run Code Online (Sandbox Code Playgroud)