摆脱Dagger 2警告“生成一个MembersInjector”

鉴于以下课程

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.类型的警告Generating a MembersInjector for AbstractClass. Prefer to run the dagger processor over that class instead. Generating a MembersInjector for AbstractClass. Prefer to run the dagger processor over that class instead. 在编译期间。

但是,如果我在AbstractClass覆盖/实现onCreate()并在那里调用dependency injection,那么依赖someDependency将被注入两次,这可能会导致意外行为。 一次进入AbstractClass onCreate() ,一次进入SomeClass onCreate()

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

截至Dagger 2.9,这些警告默认是关闭的。

解决方案可以是:仅在Abstract类中定义onCreate()