У меня есть BaseActivity, в которой я пытаюсь получить экземпляр подкласса, чтобы внедрить его с помощью кинжала.
Я пытался найти способ не проверять объект вручнуюпередается экземпляр каждого отдельного действия, но если есть более оптимальный способ сделать это.
Fi, если компонент таков:
AppComponent
@Singleton
@Component(modules = {AppModule.class})
public class AppComponent {
public void inject(FooActivity fooActivity);
public void inject(BarActivity barActivity);
public void inject(…);
}
Каждое действие расширяет BaseActivity, и у нас есть что-то вроде:
FooActivity
public class FooActivity extends BaseActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
super.inject(this);
}
}
Наконец, проблема возникает при обработке BaseActivity.
BaseActivity
текущая реализация
...
public void inject(FooActivity fooActivity) {
DaggerAppComponent.create().inject(fooActivity)
}
public void inject(BarActivity barActivity) {
DaggerAppComponent.create().inject(barActivity)
}
...
Тем не менее, я ищу более оптимальный способ, который уменьшает шаблон, поэтому я думал что-то вроде следующего:
BaseActivity
...
public void inject(Object activity) {
// retrieve the instance of the activity
// if possible and handle it so then we can:
DaggerAppComponent.create().inject(activity)
}
...
Но так как я должен найти его экземпляр, вместо того чтобы иметь серию, еслиоператоры с instanceof
, которые мне нужно будет обновить для evЕсть ли новое занятие, есть ли способ справиться с ним более автоматически?