2017-06-22 Dagger 2 の @Inject constructor / ゼルダの伝説 神々のトライフォース進捗
2017-06-19 に続いて Dagger 2 の挙動を調べている。対象に @Inject
なコンストラクタがあると、 @Provides
なメソッドがなくても、 Dagger 2 はそれを生成してくれるっぽい。なんとなくしっくり来てない。 @Inject
はそのインスタンスが Dagger 2 の管理下にあるという解釈をすればいいのか……。参考に Dagger 2 の使用している javax.inject
の API リファレンス をメモしておく。
↑から interface
の場合は @Provides
をつくらないといけない……のかな。 class
で @Inject
コンストラクタを使うほうが手抜きできる……のかな。
ちなみに循環依存すると "Found a dependency cycle" というメッセージが出て、ビルドできない。循環依存は↓のようなもの。 A は B に、 B は C に、 C は A に依存している例。
class A {
private final B;
@Inject A(B b) {
this.b = b;
}
}
class B {
private final C;
@Inject B(C c) {
this.c = c;
}
}
class C {
private final A;
@Inject C(A a) {
this.a = a;
}
}
混乱していなければ、そう起きないと思うけど……。
『ゼルダの伝説 神々のトライフォース』の進捗。
知恵の紋章を手に入れた。巨大ないもむしみたいのに苦戦したが何度も落下しつつも倒した。これで勇気・力・知恵のみっつの紋章を手に入れた。
マスターソードを抜きに行った。手に入れた。ようやく司祭アグニムを倒しに行ける。
またハイリア湖の東の洞窟でアイスロッドを手に入れた。昨日 (2017-06-21) は気づかなかったが、入り口の隣に穴を開けることができた。穴さえ開いたら、何事もなく手に入った。