В самом начале изучения DI и Dagger появляются вопросы, на которые не могу найти ответ.
Есть класс Car, в котором есть две ссылки на Engine и Wheels.
public class Car {
private static final String TAG = "Car";
@Inject Engine engine;
private Wheels wheels;
@Inject
Car(Wheels wheels){
this.wheels = wheels;
}
public void drive(){
Log.d(TAG, "driving...");
}
}
public class Engine {
@Inject
public Engine() {
}
}
public class Wheels {
@Inject
public Wheels() {
}
}
Код Component
@Component
public interface CarComponent {
void inject(MainActivity mainActivity);
}
Код Activity
public class MainActivity extends AppCompatActivity {
@Inject Car car;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
CarComponent component = DaggerCarComponent.create();
component.inject(this);
car.drive();
}
}
Скажите почему я могу используя @Inject внедрить Engine в Car, но в тоже время не могу таким же способом внедрить Car в Activity (Необходимо это делать через Component)?