类ShinyCoinProvider
和RustyCoinProvider
都实现了Provider<Coin>
,并且每个类生成的Coin
对象的属性略有不同。
另一组两个客户端类RichPlayer
和PoorPlayer
需要由Guice库自动注入的Coin
实例。
现在,Guice必须在ShinyCoinProvider
类中使用Richplayer
在RustyCoinProvider
类中使用PoorPlayer
。
因此很简单,在这里bind().toProvider()
是不够的。
如何在提供的Object具有相同类型的情况下将不同的提供程序显式绑定到不同的客户端类?
最佳答案
尝试这个:
bind(Coin.class).annotatedWith(Names.named("richplayer")).toProvider(ShinyCoinProvider.class)
并使用@Named(“ richplayer”)在Richplayer中注释硬币字段,如下所示:
@Inject
@Named("richplayer")
private Coin coin;