私は、コンストラクタの引数を取得するクラスを持っている:Dagger2で動的メンバーを持つオブジェクトをインスタンス化するにはどうすればよいですか?
public class Dependency{
Dependency(int number1, int number2, int number3, DependencyListener listener){}
}
各依存クラスは、依存関係をインスタンス化するために、パス異なる引数を必要とします。 異なる値を転送して「this」をリスナーとして渡している間に、他のクラスが正しく起動できるモジュールとコンポーネントをどのように定義する必要がありますか?
また、この場合は@Injectメソッドをどのように使用する必要がありますか?
編集1
ジェフ・ボーマン @私は次のメソッドを使用して考えた:
@Module public class DependencyModule {
int first;
int second;
int third;
DependencyListener listener;
public DependencyModule(int first, int second, int third, DependencyListener listener) {
this.first = first;
this.second = second;
this.third = third;
this.listener = listener
}
@Provides Dependency provideDependency(int first, int second, int third, DependencyListener listener) {
return new Dependency(first, second, third, listener)
}
}
@Component(modules = { DependencyModule.class }) public interface
DependencyComponent {
void inject(DependentClass1 target);
void inject(DependentClass2 target);
void inject(DependentClass3 target);
}
と私はどうしたら各DependentClass中:
public class DependentClass{
@Inject Dependency;
public DependentClass{
DaggerDependencyComponent.builder().dependencyModule(new DependencyModule(first, second, third, this)).build().inject();
}
}
がそれです良い練習ですか?
いいですが、AutoFactoryは15507のメソッドを持っています。主にGuavaのためです。 Androidで使用するライブラリのための膨大な数のメソッドです。 投稿した編集でそれを使いたかったと思いますか?それは良い習慣になるだろうか?または何か改善が必要なのでしょうか? – danidin
あなたの別のコンポーネントテクニックに本質的に間違ったことはありませんが、ここでは過剰です。 AutoValueは実際に生成されたデープでGuavaを使用しません。 [こちらのコンテキストと回避策をご覧ください](https://github.com/google/auto/issues/268) –