从枚举序数转换为枚举类型

新手上路,请多包涵

我有枚举类型 ReportTypeEnum 它在我所有类的方法之间传递,但我需要在 URL 上传递它,所以我使用序数方法来获取 int 值。在我的另一个 JSP 页面中得到它之后,我需要将它转换回 ReportTypeEnum 以便我可以继续传递它。

如何将序数转换为 ReportTypeEnum

使用 Java 6 SE。

原文由 Lennie 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 495
2 个回答

要将序数转换为其枚举表示,您可能需要这样做:

 ReportTypeEnum value = ReportTypeEnum.values()[ordinal];

请注意数组边界。

请注意,每次调用 values() 都会返回一个新克隆的数组,这可能会对性能产生负面影响。如果要经常调用它,您可能需要缓存该数组。

关于如何缓存 values() 的代码示例


编辑此答案以包含评论中给出的反馈

原文由 Joachim Sauer 发布,翻译遵循 CC BY-SA 3.0 许可协议

这几乎肯定 是个坏主意。当然,如果序号 _实际上是持久的_(例如,因为有人已将 URL 加入书签)——这意味着您必须始终保留 enum 将来的顺序,这对于代码维护者来说可能并不明显。

为什么不使用 --- 编码 enum myEnumValue.name() (并通过 ReportTypeEnum.valueOf(s) 解码)呢?

原文由 oxbow_lakes 发布,翻译遵循 CC BY-SA 2.5 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题