摆脱匕首2警告“生成成员注入器”

2022-09-01 16:17:04

给定以下类

abstract class AbstractClass {
    @Inject SomeDependency someDependency;
}

class SomeClass extends AbstractClass {
    @Inject AnotherDependency anotherDepenency;

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

在 Dagger 2 中,当将依赖项注入从也包含依赖项的抽象基类扩展的类中时,Dagger 在编译期间会显示该类型的警告。Generating a MembersInjector for AbstractClass. Prefer to run the dagger processor over that class instead.

但是,如果我覆盖/实现,并在那里调用依赖注入,依赖关系将被注入两次,这可能会导致意外的行为。一旦进入 和 一旦进入 。onCreate()AbstractClasssomeDependencyonCreate()AbstractClassonCreate()SomeClass

在防止重复注入依赖项的同时摆脱此警告的最佳解决方案是什么?


答案 1

Dagger 2.9 开始,默认情况下,这些警告处于关闭状态。


答案 2

解决方案可能是:仅在抽象类中定义 onCreate()


推荐