Guice将抽象基类绑定到具体类

Dat*_*Chu 1 java guice

我有一个具有以下绑定的模块

bind(BaseAbstract.class).to(Concrete.class).in(Scopes.SINGLETON);
bind(Concrete.class).toProvider(.....);
Run Code Online (Sandbox Code Playgroud)

当我要求Guice为我提供两个类时,一个需要基础,一个需要具体,则创建了两个单独的具体对象。

injector.getInstance(INeedABaseAbstract.class);
injector.getInstance(INeedAConcrete.class);
Run Code Online (Sandbox Code Playgroud)

我只希望Guice将一个单一的Concrete实例提供给需要BaseAbstract或Concrete的类。

con*_*dit 5

您绑定的BaseAbstractSingleton而不是Concrete。尝试这个:

bind(BaseAbstract.class).to(Concrete.class);
bind(Concrete.class).toProvider(ConcreteProvider.class).in(Scopes.SINGLETON);
Run Code Online (Sandbox Code Playgroud)