0

我有一个以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 相关的事情?

4

0 回答 0