Избавление от предупреждения о кинжале 2 "Создание члена-инжектора"

Учитывая следующие классы

abstract class AbstractClass {
    @Inject SomeDependency someDependency;
}

class SomeClass extends AbstractClass {
    @Inject AnotherDependency anotherDepenency;

    public void onCreate() {
        component = // Get component instance somehow
        component.inject(this);
    }
}

в кинжале 2 при введении зависимостей в класс, который простирается от абстрактного базового класса, который также содержит зависимости, Dagger показывает предупреждение о типе Generating a MembersInjector for AbstractClass. Prefer to run the dagger processor over that class instead. во время компиляции.

Однако, если я переопределяю/реализую onCreate() в AbstractClass и вызываю там инъекцию зависимостей, то зависимость someDependency будет вводиться дважды, что может привести к неожиданному поведению. Один раз в onCreate() из AbstractClass и один раз в onCreate() SomeClass.

Какое наилучшее решение избавиться от этого предупреждения, предотвращая дублирование инъекций зависимостей?

Ответ 1

По Dagger 2.9 эти предупреждения по умолчанию отключены.

Ответ 2

Решение может быть: define onCreate() только в абстрактном классе