当前位置: 首页 > 面试题库 >

如何获得枚举的数值?

杨成礼
2023-03-14
问题内容

假设你有

public enum Week {
    SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY
}

怎么能int代表星期日是0,星期三是3等?


问题答案:
Week week = Week.SUNDAY;

int i = week.ordinal();

但是请注意,如果您更改声明中的枚举常量的顺序,则此值将更改。解决此问题的一种方法是将int值自定义为所有枚举常量,如下所示:

public enum Week 
{
     SUNDAY(0),
     MONDAY(1)

     private static final Map<Integer,Week> lookup 
          = new HashMap<Integer,Week>();

     static {
          for(Week w : EnumSet.allOf(Week.class))
               lookup.put(w.getCode(), w);
     }

     private int code;

     private Week(int code) {
          this.code = code;
     }

     public int getCode() { return code; }

     public static Week get(int code) { 
          return lookup.get(code); 
     }
}


 类似资料:
  • 问题内容: 如何确定Swift枚举中的个案数? (我想避免手动枚举所有值,或者尽可能避免使用旧的“enum_count技巧”。) 问题答案: 从Swift 4.2(Xcode 10)开始,您可以声明符合协议,这适用于所有没有关联值的枚举: 现在可以简单地通过 有关更多信息,请参见 SE-0194枚举案例的派生集合

  • 是否有一种内置的方法来获取Enum的项目数,例如, 或者我必须根据元素的数量实现一个函数?

  • 问题内容: 例如,我该怎么做: 结果示例: 问题答案: 迅捷4.2+ 从Swift 4.2(使用Xcode 10)开始,只需添加协议一致性即可从中受益。要添加此协议一致性,您只需要在某处写: 如果枚举是您自己的,则可以直接在声明中指定一致性: 然后,以下代码将打印所有可能的值: 与早期Swift版本(3.x和4.x)的兼容性 如果您需要支持Swift 3.x或4.0,则可以通过添加以下代码来模仿S

  • 问题内容: 假设是,我将如何产生给定序数的枚举值? 问题答案: 足够了。一条线; 足够简单。