Guice/Eclipse Type文字问题



这是我遇到的问题。我有一个界面:

public interface MyInterface <AMessageTuple>{
public ConnectableObservable<AMessageTuple> getTokenConnectableObservable();
}

我有一个我希望成为单例的实现:

public class MyImpl implements MyInterface<ImmutablePair<String, Message>> {
...
//irrelevant members omitted
@Override
public ConnectableObservable<ImmutablePair<String, Message>> getTokenConnectableObservable() {
return tokenObservable;
}
...
}

当我尝试将接口绑定到扩展 GuiceAbstractModule的类中的实现时:

public class MyServiceModule extends AbstractModule {
@Override
protected void configure() {
TypeLiteral <MyInterface<ImmutablePair<String, Message>>> t = new TypeLiteral<MyInterface<ImmutablePair<String,Message>>>() {
};  
bind(t).annotatedWith(Names.named("firstOne")).to(MyImpl.class).in(Singleton.class);
}
}

bind...法谱以红色下划线(作为编译错误),这是我将鼠标悬停在上面时看到的消息:

类型AbstractModulebind(Key<T>)的方法不适用 对于参数(TypeLiteral<MyInterface<ImmutablePair<String, Message>>>)

奇怪的是,按 Ctr+空格键确实可以识别出方法绑定(TypeLiteral)的存在......所以我有点困惑,希望有人能给我一个提示,告诉我我错过了什么。

上下文:我使用Eclipse Neon作为我的IDE,我使用(显然)Guice(版本4.0)进行DI,项目的JDK是oracle-7。我目前在 Guice 中绑定泛型类的方法就是基于这个问题。

确保使用import com.google.inject.TypeLiteral;

最新更新