我有一个以Coda Hale 的 AbstractInjectableProvider风格编写的 InjectableProvider,它提供了一个 Id:
@Override
public Id<User> getValue(HttpContext httpContext) {
return new Id<User>(1234);
}
我的资源中的这段代码有效:
@GET
@Produces( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
@Path("accounts")
public AccountsSummary getAccounts(@Context Id userId) {
return accountsSummaryFromUserId(userId);
}
当我像这样添加类型参数时:
public AccountsSummary getAccounts(@Context Id<User> userId) {
启动时出现错误:
SEVERE: Missing dependency for method public com.example.AccountsSummary com.example.ExperimentApi.getAccounts(com.example.Id) at parameter at index 0
SEVERE: Method, public com.example.AccountsSummary com.example.ExperimentApi.getAccounts(com.example.Id), annotated with GET of resource, class com.example.ExperimentApi, is not recognized as valid resource method.
在某些时候,我可以预见我可能需要注入其他类型的 Id 或其他参数化类。如何让@Context 了解泛型?我是否需要做一些与使 getInjectable 使用 Parameter 而不是 Type 相关的事情?