如何解决 IllegalArgumentException:Java 中没有枚举常量 ClientRequest.TwoNumbersEnum.1?

How to resolve IllegalArgumentException: No enum constant ClientRequest.TwoNumbersEnum.1 in Java?

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

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

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

Java Enum.valueOf 用于 return 来自字符串的枚举常量。您使用了 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()。有关更多信息,请参阅文档。