【发布时间】:2015-05-25 04:51:51
【问题描述】:
在我看来,Guice 实现在处理泛型时做了一些非常棘手的事情。看起来它在运行时知道在编译时使用的泛型类型。我们来看一个简单的例子:
@Inject
public void Bar(Provider<Foo> genericInjector){
...
在运行时,Guice 将在此处注入 Provider 的正确实现(即提供 Foo 实例的那个)。但据我所知,泛型类型在运行时被擦除(参见:Type Erasure)。所以 Guice 在运行时真正看到的是:
@Inject
public void Bar(Provider genericInjector){
....
那么,Guice 怎么可能知道要注入 Provider 的哪个实现呢?
【问题讨论】: