@Injectするオブジェクトのインスタンス生成については、@Moduleを付けたModuleという部分で定義することで切り離す。
とてもつもなくわかりやすいdagger2(2.11)入門 - Qiita
Y.A.M の 雑記帳: Android で Dagger を使う(その1)
Pump1やPump2をPumpBaseにする。
PumpBaseは、
interfaceになっていて、
これをPump1が継承している。
で、PumpBaseModuleは、
providePumpBaseというメソッドを定義し、Pump1からPumpBaseへの変換役となっている。
そして、
DaggerMainActivity_CoffeeShop.create()を、DaggerMainActivity_CoffeeShop.builder().pumpBaseModule(new PumpBaseModule()).build()に差し替える。
@Componentのほうも、PumpBaseModule.classを使うように指定する。
これで、
PumpBaseModuleが内部で指定しているPump1を生成して使うようになる。
Sample/dagger/annotationModule/annotationModule/AM/AM_ at master · bg1bgst333/Sample · GitHub