Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/rest/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
枚举为java.wx.rs.DefaultValue_Java_Rest_Enums - Fatal编程技术网

枚举为java.wx.rs.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。但是
@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)”嗯,您不能。这是没有办法的。您必须传递一个字符串,因为这是属性的类型,并且它必须是编译时常量。不要对这些默认值使用枚举。使用两个字符串常量。