6

私はこのクラスを持っています:

public class ClassWithoutInject {

}

...そしてこのモジュール...

@Module(
        injects={
                ClassWithoutInject.class 
        })
public class SimpleModule {
}

これがコンパイル時エラーを生成するはずだと考えるのは間違っていますか? 実行時に私は得る:

  Unable to create binding for com.example.ClassWithoutInject required by class com.example.SimpleModule

(クラスには @Inject アノテーション付きコンストラクターがないため)。しかし、短剣はコンパイル時にそれを知っているべきではありませんか?

4

1 に答える 1

0

あなたは実際にどこに注射していClassWithoutInjectsますか?

モジュールのinjectsは、そのモジュールによって提供される から依存関係を要求するクラスを参照します。

したがって、この場合、Dagger はClassWithoutInjects、このモジュール (現在は空) によって提供される依存関係を使用して、ObjectGraph から依存関係を要求することを期待しています。

ClassWithoutInjects依存関係の消費者 (モジュールのように設定されているもの) としてではなく、依存関係として提供したい場合は@Inject、コンストラクターに を追加するか、モジュールに明示的なプロバイダー メソッドを追加します。

@Module
public class SimpleModule {
  @Provides ClassWithoutInjects provideClassWithoutInjects() {
    return new ClassWithoutInjects();
  }
}

IfClassWithoutInjectsは依存関係の消費者です。

@Module(injects = ClassWithoutInjects.class)
public class SimpleModule {
  // Any dependencies can be provided here
  // Not how ClassWithoutInjects is not a dependency, you can inject dependencies from
  // this module into it (and get compile time verification for those, but you can't 
  // provide ClassWithoutInjects in this configuration
}

public class ClassWithoutInject {
    // Inject dependencies here
}
于 2014-03-05T16:38:53.363 に答える