blog.bouzuya.net

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) は気づかなかったが、入り口の隣に穴を開けることができた。穴さえ開いたら、何事もなく手に入った。