Classes without dependencies can easily be created by dagger.
public class Engine {
@Inject // <-- Annotate your constructor.
public Engine() {
}
}
This class can be provided by any component. It has no dependencies itself and is not scoped. There is no further code necessary.
Dependencies are declared as parameters in the constructor. Dagger will call the constructor and supply the dependencies, as long as those dependencies can be provided.
public class Car {
private Engine engine;
@Inject
public Car(Engine engine) {
this.engine = engine;
}
}
This class can be provided by every component iff this component can also provide all of its dependencies—Engine
in this case. Since Engine
can also be constructor injected, any component can provide a Car
.
You can use constructor injection whenever all of the dependencies can be provided by the component. A component can provide a dependency, if
@Subcomponent
)