dagger 2 - medium - ¿Cómo crear un objeto mediante inyección de constructor?
inject class android (1)
Para crear un objeto utilizando la función de inyección del constructor Dagger 2, debe agregar un método a un componente que proporcione una clase Cat.
@Component(
dependencies = ApplicationComponent.class,
modules = CatModule.class)
public interface ActivityComponent {
void inject(final CatActivity a);
// objects exposed to sub-components
Cat cat();
Dog dog();
}
Una instancia de Dog se puede recuperar llamando a [Component].dog()
.
final ActivityComponent comp = DaggerActivityComponent.builder()
.applicationComponent(app.getApplicationComponent())
.build();
final Dog d = comp.dog();
¿Cómo crearía una instancia de Dog con un componente que proporcione Cat.
public final class Dog {
private final Cat mCat;
public final static String TAG = "Dog";
@Inject public Dog(Cat cat) {
mCat = cat;
Log.e(TAG, "Dog class created");
}
}
Después de experimentar con Dagger 2 por un tiempo, no tengo idea de cómo usar la inyección de constructor. Una sugerencia sería agradable, gracias.
Editar:
¿Qué hay de malo con la pregunta? Después de usar Dagger 2, seguir varios tutoriales y leer la documentación oficial, no tengo ni idea de cómo usar la función de inyección del constructor, por eso lo pregunto aquí. En lugar de inyectar la dependencia Cat en Dog con @Inject, podría escribir un DogModule que proporcione un objeto Dog, pero Dog sería solo una clase regular de Java. La inyección de campo funciona muy bien (hay muchos ejemplos que muestran cómo usarla) pero ¿qué debo hacer para usar la inyección de constructor?