質問: ### 前提・実現したいこと DIの初心者です。 AndroidのDagger2APIを使ってアプリの開発をしています。 始めたばかりのため、意図がよくわからない、あるいは的外れな質問をしているかもしれません。 ### 発生している問題・エラーメッセージ BoardManagerImplというクラスに対してコンストラクタインジェクションを行いたいのですが、 このクラスのコンストラクタの引数が BoardManagerImpl( Board board, GameMode mode, Player blackPlayer, Player whitePlayer ) となっている時この第3引数と第4引数を区別して注入することはできるのでしょうか。 ### 該当のソースコード Android Java @Module public class DomainModule2 { @Provides public Player providePlayer() { return null; //どう書けばいいのかわからない } @Provides public BoardManager provideBoardManager( Board board, GameMode gameMode, Player blackPlayer, //ここと Player whitePlayer //ここに別のインスタンスを注入したい ) { return new BoardManagerImpl( board, gameMode, blackPlayer, whitePlayer ); } //省略 } ### 試したこと ### 補足情報(言語/FW/ツール等のバージョンなど) Android Java Dagger2
回答: 可能です。DaggarのNamedというのを使えば可能です。詳細は下記のURLの下のほうに書いてありますのでご確認ください。一応サンプルコードも載せときます。Daggarに慣れるまで大変だと思いますが頑張ってください。 参考Url ``` //at DomainModule2 @Provides public Player providePlayer() { return Player(hoge,fuga) ←ここでblackPlayer用のPlayerをインスタンス化 } @Provides @Named("whitePlayer") public Player providePlayer() { return Player(hoge,fuga) ←ここでブロック用のwhitePlayer用のPlayerをインスタンス化 } @Provides public BoardManager provideBoardManager( Board board, GameMode gameMode, Player blackPlayer, //ここと @Named("whitePlayer") Player whitePlayer ) { return new BoardManagerImpl( board, gameMode, blackPlayer, whitePlayer ); } ```