首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Guice/Eclipse问题

Guice/Eclipse问题
EN

Stack Overflow用户
提问于 2017-04-06 21:07:10
回答 1查看 175关注 0票数 4

我有个问题。我有一个接口:

代码语言:javascript
复制
public interface MyInterface <AMessageTuple>{

public ConnectableObservable<AMessageTuple> getTokenConnectableObservable();
}

我想成为一个单身人士:

代码语言:javascript
复制
public class MyImpl implements MyInterface<ImmutablePair<String, Message>> {

...
//irrelevant members omitted

@Override
public ConnectableObservable<ImmutablePair<String, Message>> getTokenConnectableObservable() {
    return tokenObservable;
}

...
}

当我试图在扩展Guice的AbstractModule的类中将接口绑定到实现时

代码语言:javascript
复制
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...规则以红色加下划线(作为编译错误),这是我在悬停在上面时看到的消息:

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

奇怪的是,按下Ctr+Space确实认识到方法绑定(TypeLiteral)存在.所以我有点困惑,希望有人能给我一个提示,让我知道我错过了什么。

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

EN

回答 1

Stack Overflow用户

发布于 2019-10-19 18:16:59

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43265766

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档