小编Per*_*Per的帖子

如何将对象转换为枚举以在开关语句中使用它

使用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)

java enums

3
推荐指数
1
解决办法
3934
查看次数

标签 统计

enums ×1

java ×1