考虑以下结构:
public class WaterWorld implements IWorld {
...
@Inject
CreationMode creationMode;
@Override
public final void init() {
WorldModule.getComponent().inject(this);
}
...
}
如果WaterWorld
具有以下结构,则Component
是否可以获得依赖关系:
void inject(IWorld world);
我以这种方式获取null。但是,如果我尝试在以下
中执行此操作 void inject(WaterWorld world);
然后它起作用。但是,我有许多实现IWorld
的类。我想这样做:void inject(IWorld world);
该怎么做?还是有其他通用解决方案?
答案 0 :(得分:0)
否,Dagger将始终注入inject(Foo foo)
方法中指定的类。它将注入父类型中的对象,但不注入子类中的对象。
Dagger使用指定的类型来生成用于注入的代码,但是如果您未指定特定的类,则Dagger根本不了解它,也不会注入其字段。
注意:您没有提供任何特定的示例,但是看起来您可以很好地使用构造函数注入,而无需在组件中进行手动注入或注入方法。如果您对同一接口有多种实现,您甚至可以看看Dagger的多重绑定。