枚举为java.wx.rs.DefaultValue
我想在头参数中提供一个枚举值作为DefaultValue。但是枚举为java.wx.rs.DefaultValue,java,rest,enums,Java,Rest,Enums,我想在头参数中提供一个枚举值作为DefaultValue。但是@DefaultValue只接受编译时常量字符串,不接受枚举。下面是一个简单的工作示例: package com.my.package; 导入javax.ws.rs.DefaultValue; 导入javax.ws.rs.GET; 导入javax.ws.rs.HeaderParam; 导入javax.ws.rs.Path; @路径(“/some_Path”) 公共类测试服务{ 公共枚举髓鞘{ 福, 酒吧; } @得到 公共字符串def
@DefaultValue
只接受编译时常量字符串,不接受枚举。下面是一个简单的工作示例:
package com.my.package;
导入javax.ws.rs.DefaultValue;
导入javax.ws.rs.GET;
导入javax.ws.rs.HeaderParam;
导入javax.ws.rs.Path;
@路径(“/some_Path”)
公共类测试服务{
公共枚举髓鞘{
福,
酒吧;
}
@得到
公共字符串defaultAsHardcodedString(@HeaderParam(“x-my-header”)@DefaultValue(“FOO”)MyEnum MyEnum){
//编译,但我不喜欢它,因为使用枚举的大部分好处都消失了
返回“不重要”;
}
@得到
公共字符串defaultAsDynamicString(@HeaderParam(“x-my-header”)@DefaultValue(MyEnum.FOO.toString())MyEnum MyEnum){
//编译错误“注释属性DefaultValue.value的值必须是常量expressionJava(536871525)”
返回“不重要”;
}
@得到
公共字符串defaultAsEnum(@HeaderParam(“x-my-header”)@DefaultValue(MyEnum.FOO)MyEnum MyEnum){
//编译错误“类型不匹配:无法从MyEnum转换为StringJava(16777233)”
返回“不重要”;
}
}
编译错误显示:
注释属性DefaultValue.value的值必须是常量表达式
如果我尝试使用@DefaultValue(MyEnum.Foo.toString())
或
类型不匹配:无法从MyEnum转换为字符串
对于
@DefaultValue(MyEnum.Foo)
。您可以尝试MyEnum.Foo.name()@dassum:与toString()
方法的结果相同:“注释属性DefaultValue.value的值必须是常量表达式java(536871525)”嗯,您不能。这是没有办法的。您必须传递一个字符串,因为这是属性的类型,并且它必须是编译时常量。不要对这些默认值使用枚举。使用两个字符串常量。