ShinyCoinProviderRustyCoinProvider都实现了Provider<Coin>,并且每个类生成的Coin对象的属性略有不同。

另一组两个客户端类RichPlayerPoorPlayer需要由Guice库自动注入的Coin实例。

现在,Guice必须在ShinyCoinProvider类中使用RichplayerRustyCoinProvider类中使用PoorPlayer

因此很简单,在这里bind().toProvider()是不够的。

如何在提供的Object具有相同类型的情况下将不同的提供程序显式绑定到不同的客户端类?

最佳答案

尝试这个:

bind(Coin.class).annotatedWith(Names.named("richplayer")).toProvider(ShinyCoinProvider.class)


并使用@Named(“ richplayer”)在Richplayer中注释硬币字段,如下所示:

@Inject
@Named("richplayer")
private Coin coin;

09-12 11:58