一般类型的injector.getInstance

Ela*_*da2 2 java generics dependency-injection class guice

我看过这篇关于注册泛型类型的帖子.

如何注册的例子:

 bind(new TypeLiteral<Dal<RoutingResponse>>() {}).to((Class<? extends Dal<RoutingResponse>>) ResponseDal.class);
Run Code Online (Sandbox Code Playgroud)

但是如何从进样器中获取泛型类型的实例?

我试过了:

injector.getInstance(Dal<RoutingResponse>().getClass());
Run Code Online (Sandbox Code Playgroud)

但有编译错误.

我该怎么写呢?

con*_*dit 6

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

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

或者在更长的版本中,使用TypeLiteral:

injector.getInstance(Key.get(new TypeLiteral<Dal<RoutingResponse>>() {}));
Run Code Online (Sandbox Code Playgroud)