클래스 ShinyCoinProvider
및 RustyCoinProvider
은 모두 Provider<Coin>
을 구현하며 각각은 약간 다른 속성을 가진 Coin
개체를 생성합니다.Google Guice의 명시 적 공급자 바인딩
두 클라이언트 클래스 RichPlayer
및 PoorPlayer
의 또 다른 세트는 Guice 라이브러리에 자동으로 삽입 된 Coin
의 인스턴스를 필요로합니다.
이제 guice는 Richplayer
및 RustyCoinProvider
에서 PoorPlayer
클래스에 ShinyCoinProvider
을 사용해야합니다.
따라서 간단하면 bind().toProvider()
은 충분하지 않습니다.
다른 공급자를 다른 클라이언트 클래스에 명시 적으로 바인딩하는 방법, 제공된 개체의 형식이 동일한 경우? 이 같은 @Named ("richplayer")와 Richplayer에
bind(Coin.class).annotatedWith(Names.named("richplayer")).toProvider(ShinyCoinProvider.class)
및 주석 동전 필드 :
감사합니다. 나는'@ Named'가 클래스가 정의 될 때 클래스를 식별하기 위해서만 사용된다는 것을 혼란스러워했다. 이 솔루션을 사용해보십시오. –