Java 当未指定@DefaultValue时,@QueryParam的默认值是什么?

Java 当未指定@DefaultValue时,@QueryParam的默认值是什么?,java,rest,javax.ws.rs,queryparam,Java,Rest,Javax.ws.rs,Queryparam,例如,具有以下Java rest定义: @GET @Path("/something") public String somthing( @QueryParam("valString") String valString, @QueryParam("valInt") int valInt, @QueryParam("valBool") boolean valBool ) { ... } 和调用: curl -X GET 127.0.0.1/something 如果

例如,具有以下Java rest定义:

@GET
@Path("/something")
public String somthing(
    @QueryParam("valString") String valString,
    @QueryParam("valInt") int valInt,
    @QueryParam("valBool") boolean valBool
) {
  ...
}
和调用:

curl -X GET 127.0.0.1/something

如果调用中未指定参数值,参数值将是什么?(valString=?,valInt=?,valBool=?)值将为
null
0
false
,即这些类型的未初始化变量的默认值。如果客户端没有将参数放入URL中,并且服务没有指定默认值,那么服务将获得非初始化变量的Java默认值。

Short-response 参数值将为:

  • valString
    null
  • valInt
    0
  • valBool
    false
回答再长一点 引述有关:

如果
@DefaultValue
未与
@QueryParam
一起使用,以及 请求中不存在查询参数,值将为
列表
集合
分类数据集
的空集合<代码>空值用于 其他对象类型;以及基元类型的默认值

基本类型的默认值在来自Oracle的中介绍:

原语默认值
-------------------------------
字节0
短0
整数0
长0L
浮动0.0f
双0.0d
字符'\u0000'
布尔假
如您所知,使用注释可以更改此行为,如下所示:

@GET
@路径(“/foo”)
公共字符串myMethod(@DefaultValue(“foo”)@QueryParam(“valString”)字符串valString,
@DefaultValue(“1”)@QueryParam(“valInt”)int valInt,
@DefaultValue(“true”)@QueryParam(“valBool”)布尔值(valBool){
....
}

看看这里@Valijon-你是说REST默认值与Java的默认类成员相似?它们不相似,它们是一样的,因为这是一个实现问题。REST不强制参数使用“默认值”,因为它不是一个规范。您的答案基于什么?基于逻辑、经验和(相反顺序)