【发布时间】:2016-04-04 06:58:03
【问题描述】:
给定以下类
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. 类型的警告。
但是,如果我在 AbstractClass 中覆盖/实现 onCreate() 并在那里调用依赖注入,则依赖 someDependency 将被注入两次,这可能会导致意外行为。一次在onCreate() 的AbstractClass 和一次在onCreate() 的SomeClass。
在防止重复注入依赖项的同时消除此警告的最佳解决方案是什么?
【问题讨论】: