【问题标题】:How to convert the value of an enum from input to Enum? [duplicate]如何将枚举的值从输入转换为枚举? [复制]
【发布时间】:2021-03-28 11:15:13
【问题描述】:

我有以下枚举及其值:

如何将枚举的值转换为枚举?例如,从“Rocky”作为输入,如何将类的枚举设置为 ROCK?

我尝试像这样使用 valueOf:

gen gen1 = gen.valueOf("Rocky")

但是,它会引发“无枚举常量”的 IllegalArgumentException。

我一直在努力解决这个问题,尽管我认为这太容易了,但我是初学者。我不得不将直接枚举常量作为输入,而不是将枚举的值作为输入。但是我想了解如何将枚举的值转换为枚举常量?

【问题讨论】:

  • 你的枚举项是ROCK,而不是Rocky,所以valueOf("Rocky") 不起作用。如果你想通过字段值找到你的枚举,你必须遍历并检查每一个。
  • 或者您必须添加自己的方法,该方法根据值返回枚举。创建一个静态方法,遍历所有枚举,如果找到正确的,则返回它
  • 如果要使用 valueOf 需要给出枚举项的名称,gen.valueOf("ROCK") 或重写方法。这回答了你的问题了吗? Override valueof() and toString() in Java enum
  • 您的代码无法编译。

标签: java enums


【解决方案1】:

valueOf 方法用于当您有一个与枚举常量名称匹配的字符串时,例如ROCKPOP 等。显然没有可以与您的自定义字段交互的内置方法,它可以做任何事!

不幸的是,它必须手动完成,并且您必须遍历所有枚举值(可以使用 Enum.values() 检索并比较您的字段。

【讨论】:

    猜你喜欢
    • 2013-08-03
    • 1970-01-01
    • 1970-01-01
    • 2020-08-21
    • 2021-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多