Qualified フィールド インジェクション コンストラクト インジェクションとメソッド インジェクションを正常に使用しました。次のコードのように、dagger 2.10 から Qualified メソッドへの依存関係を注入することを期待しています。
public class MainActivity extends AppCompatActivity {
@Override protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
DaggerMainActivityComponent.create().inject(this);
}
@Named("firstName")
@Inject
void initFirstName(String firstName){
}
@Named("lastName")
@Inject
void initLastName(String lastName){
}
@Module public class UserModule {
@Named("firstName")
@Provides
String provideFirstUserName() {
return "Nasser";
}
@Named("lastName")
@Provides
String provideLastUserName() {
return "Khosravi";
}
}
@Component(modules = { UserModule.class})
public interface MainActivityComponent {
void inject(MainActivity mainActivity);
@Named("firstName")
String getFirstName();
@Named("lastName")
String getLastName();
}
}
しかし、私がこのコードを使用する
と、@Injectコンストラクターなしで、または@Provides-または@Produces-アノテーション付きメソッドからjava.lang.Stringを提供できません。
ウェブには短剣に関する簡単なチュートリアルがたくさんありますが、それらはすべて同じであり、修飾されたメソッド注入に関する例は見つかりません。
メソッドインジェクションが必要な理由
次の理由から、フィールド注入よりもメソッド注入を好みます。
- フィールドインジェクションよりクリア
- ブレークポイントを設定し、注入されたデバッグ値を単純に設定できます
- プライベートフィールドに注入された値を割り当てることができます
- ....
私の質問:
dagger 2 で Qualified メソッドの注入は可能ですか? またはメソッド注入の私の期待は間違っていますか?
可能であれば、どうすれば達成できますか?
アドバイスをありがとう。