Guice 提供了一种查找给定类型 ( Injector#findBindingsByType )的所有绑定的方法,它还提供了一个TypeLiteral 类,似乎可以从中构造通配符类型。我想做的是找到某种类型的所有绑定,这些类型由通配符类型参数化,但我不知道该怎么做。看一下 guice src 表明我可能会叫错树,但我想我还是会四处打听......所以例如给定一个类型
Foo<E extends Bar>
BarImplOne implements Bar
BarImplTwo implements Bar
和一些绑定,比如
bind(new TypeLiteral<Foo<BarImplOne>>() {}).to(MyFooOne.class);
bind(new TypeLiteral<Foo<BarImplTwo>>() {}).to(MyFooTwo.class);
然后我希望能够发现两个绑定,例如
Injector.findBindingsByType(TypeLiteral.get(Types.newParameterizedType(Foo.class, Types.subtypeOf(Bar.class))));
有任何想法吗?
干杯马特