injector.getInstance 属于泛型

injector.getInstance of a generic type

我看过这个post关于注册泛型类型。

关于如何注册的示例:

 bind(new TypeLiteral<Dal<RoutingResponse>>() {}).to((Class<? extends Dal<RoutingResponse>>) ResponseDal.class);

但是如何从注入器中获取泛型实例?

我试过:

injector.getInstance(Dal<RoutingResponse>().getClass());

但是出现编译错误。

这个应该怎么写?

您可以使用 Key 获取这些绑定的实例:

injector.getInstance(new Key<Dal<RoutingResponse>>() {}); // supplied by @DanielPryden in the comments

或更长的版本,带有 TypeLiteral:

injector.getInstance(Key.get(new TypeLiteral<Dal<RoutingResponse>>() {}));