这是我的问题。我有一个界面:
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;
}
...
}
当我尝试将接口绑定到扩展Guice AbstractModule
的类中的实现时:
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...
ligne以红色加下划线(编译错误),这是我在悬停时看到的消息:
bind(Key<T>)
类型中的方法AbstractModule
不适用 对于论点(TypeLiteral<MyInterface<ImmutablePair<String, Message>>>)
奇怪的是,按下Ctr + Space确实认识到方法bind(TypeLiteral)存在...所以我有点困惑,并希望有人可以给我一个关于我缺少什么的提示。
上下文:我使用Eclipse Neon作为我的IDE,我使用(显然)Guice(版本4.0)用于DI,项目的JDK是oracle-7。我目前在Guice中绑定泛型类的方法基于this question。
答案 0 :(得分:0)
请确保您使用import com.google.inject.TypeLiteral;