Java 为什么可以';指定@DefaultValue的类型吗?

Java 为什么可以';指定@DefaultValue的类型吗?,java,web-services,jax-rs,Java,Web Services,Jax Rs,当我为我的服务指定@DefaultValue时,调用它时没有提供参数,为什么它只能是字符串,而不能是任何其他类型?下面的@DefaultValue(0)抛出一个错误“无法从int转换为String”-如果我希望默认值是另一种类型怎么办 @POST @Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON }) @Consumes(MediaType.APPLICATION_FORM_URLENCODED) @Path("/

当我为我的服务指定@DefaultValue时,调用它时没有提供参数,为什么它只能是字符串,而不能是任何其他类型?下面的@DefaultValue(0)抛出一个错误“无法从int转换为String”-如果我希望默认值是另一种类型怎么办

@POST
@Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
@Path("/createAccount")
public BankActivity createAccount(
        @QueryParam("ownerId") @DefaultValue(0) int ownerID,
        @QueryParam("accountPin") @DefaultValue("1234") String pin,
表示表单参数、查询参数、cookie和其他一些参数的默认值,如javadoc中所述。这些不同的参数和值作为请求的一部分发送。http服务器将它们作为字符串接收,您的jax rs容器将对它们进行解析并进行适当的转换
@DefaultValue
以字符串形式提供值,让容器使用提供的值进行转换

因此,只需提供
int
值的字符串表示,容器就会进行正确的转换