作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我创建了一个 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/
我是一名优秀的程序员,十分优秀!