gpt4 book ai didi

java - 为什么Spring要求枚举参数的名称与字符串值相同?

转载 作者:行者123 更新时间:2023-12-02 09:29:18 24 4
gpt4 key购买 nike

我创建了一个 Spring boot 应用程序,它在 header 中采用枚举参数 client 。如果我按如下方式定义枚举客户端:

public enum Client {

app("app"),
web("web");

Client( String agent){
this.agent = agent;
}

public final String agent;
}

它工作成功。但是当我按如下方式声明我的枚举时:

public enum Client {

APP("app"),
WEB("web");

Client( String agent){
this.agent = agent;
}

public final String agent;
}

它抛出错误java.lang.IllegalArgumentException:没有枚举常量com.xx.xxx.Client.app

看来Spring正在尝试将字符串参数转换为同名枚举,但为什么它不使用Client.valueOf(String)方法来派生Client 枚举?

我可以像第一种方法一样声明我的枚举,但想了解为什么 Spring 会表现出这种行为。

最佳答案

根据您提供的信息和收到的错误消息,我认为您将枚举常量与枚举值搞错了。

 APP("app")

这里,APP是枚举常量,app是它的值,所以当你调用

Client.valueOf("APP")

它将返回 - “app”。

但正如错误所示,您正在调用

Client.valueOf("app")

关于java - 为什么Spring要求枚举参数的名称与字符串值相同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58109259/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com