Guiceは、いわゆるバインディングアノテーションの2つのバリエーションを提供します。これらは、実際にはクラスレベルとインスタンスレベルのアノテーションに分類されるようです。
「クラスレベル」:
bind(Service.class).annotatedWith(Red.class).to(RedServiceImpl.class);
@Red
public class SomeService implements Service { ... }
Service redSvc = injector.getInstance(SomeService.class);
「インスタンスレベル」:
bind(Service.class).annotatedWith(Names.named("Blue").to(BlueServiceImpl.class);
@Blue blueSvc = injector.getInstance(Service.class);
ある方法が他の方法よりも優先されるのはいつですか?クラスレベルのアノテーションは、インスタンスレベルよりも絶対的/柔軟性がないようです。どちらの方法の長所/短所/警告/落とし穴?