假設我有這樣的:吉斯,泛型和TypeLiterals
public class Foo<T> {
@Inject public Foo(Class<T> tClass);
}
public class FooProvider<T> implements Provider<Foo<T>> {
@Inject private TypeLiteral<T> type;
@Override
public Foo<T> get() {
Class<T> rawType = (Class<T>) type.getRawType();
return new Foo<>(rawType);
}
}
如果我有,在一個模塊中,
bind(Foo.class).toProvider(FooProvider.class);
會自動綁定Foo<Integer>
,Foo<String>
,等等,或將他們必須分開提供?另外假設我無法修改Foo
,因此需要TypeLiteral<T>
而不是Class<T>
。
相關問題:假設相反,我有Guava的TypeToken<T>
(或其他類似的「類型令牌」類),並且我有一個提供程序將TypeLiteral<T>
轉換爲TypeToken<T>
。類似的原則會起作用嗎?
爲什麼不自己試試呢? –
IMO guice在處理仿製藥方面做得不好。有時候它可能看起來像是一個非常有效的過程,可以正確綁定泛型。 –