検索してみてわかったことは以下だ。Guiceのように実行時にリフレクションを使うものではなく、事前にコード生成するものらしい。Android開発者しか使っていないらしい。Dagger2の欠点を述べている者がいない。サンプルとして提示されているものはAndroid専用か、もしくはただのスニペットだけ。こちらはAndroid開発などしないので、ごく普通のJavaアプリのサンプルが欲しいのだが、全く見つからない。いって、コードスニペットを提示されたところで、それをどうするのかさっぱりわからない。このため、一度も動かしてはいない。これ以上探すのも面倒なので。GuiceのサンプルGuiceのサンプルならとても簡単だ(Eclipseでの実行を前提にしている)。}}これだけで依存性注入の経験は可能だ。Dagger2にはこの程度のサンプルも見つけられない。Daggerに文句を言ってる人さらに検索してみると、Daggerに文句を言ってる人がいた。以下要点を書いてみる。何がどこに注入できるかといういくつかの制限がある。ほとんどの場合、これらの制限は良いことであり、それはコードの改善を示している。いくつかのケースでは、あまりに制限が大きいと感じる。注入されるオブジェクトは必ずコンストラクタに@Injectが必要Guiceはなくてもできる。これはサードパーティのライブラリを使う場合に非常に便利だ。自身のコードだけならOKだが。Daggerを使う場合にはボイラープレートコードをたくさん書かないと行けなくなる。インターフェースを実装にバインドするショートカットがないGuiceにはあるのだが、これは製品とテストでバインディングを変更するのにとても便利だ。Daggerにはそれがない。そのためにやはりボイラープレートコードが必要になる。制限につぐ制限Guiceには無い制限がたくさんある。Guiceをつかっているなら、以下にぶち当たるだろう。モジュールはabstractやprivateにできない。@Providesメソッドはstatiicにできない。privateやfinalメンバーに注入できない。例外を発生するコンストラクタを注入できない。ユニットテストへの注入Guiceでは簡単にできるが、Daggerではモジュールをつくらないといけない。テスト自身のモジュールが必要になる。その結果テスト全体にわたってたくさんのボイラープレートコードが必要になる。一度たりとも使ってはいないのだが、面倒そうなのでパスすることにした。そもそも、アノテーションを処理して事前にコード生成する点自体が疑問だらけだ。Guiceよりはるかに高速になるだろうが、Guiceより制限が多いことは容易に想像できる。Guiceにて以下のようなエラーが発生した。4.2.2で以下のエラーが発生。コメントをキャンセルメールアドレスが公開されることはありません。*ウェブサイト次回のコメントで使用するためブラウザーに自分の名前、メールアドレス、サイトを保存する。上に表示された文字を入力してください。