【问题标题】:How to resolve IllegalArgumentException: No enum constant ClientRequest.TwoNumbersEnum.1 in Java?如何解决 IllegalArgumentException:Java 中没有枚举常量 ClientRequest.TwoNumbersEnum.1?
【发布时间】:2021-12-05 07:17:02
【问题描述】:

我正在学习 Java 和 Enum,我有这个枚举:

public static enum TwoNumbersEnum {
    _1("1"),
    _0("0");

之后我尝试为一个对象设置值“1”:

theClient.setTwoNumbers(ClientRequest
        .TwoNumbersEnum.valueOf("1"));

当我尝试设置它时,我得到:

java.lang.IllegalArgumentException: No enum constant com.dgs.ClientRequest.TwoNumbersEnum.1

我该如何解决这个问题?我认为这个问题只针对数字。提前谢谢!

【问题讨论】:

  • valueOf 是做什么的?

标签: java enums illegalargumentexception


【解决方案1】:

Java Enum.valueOf 用于从字符串返回枚举常量。您使用了 TwoNumbersEnum.valueOf("1") 并且没有常量名称为 "1" 的枚举(不可能作为数字。)

你必须像 TwoNumbersEnum.valueOf("_1") 这样称呼它。

您可以在枚举定义中编写访问方法来直接访问它的值。如下所示

public static enum TwoNumbersEnum {
        
        _1("1"),
        _0("0");
        private final String value;
        private TwoNumbersEnum(String val) {
            this.value = val;
        }
        public String value() {
            return this.value;
        }
        
    }

如果您需要值本身,然后将其称为TwoNumbersEnum.valueOf("_1").value()。有关更多信息,请参阅文档。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-11
    • 2015-11-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多