因此,简而言之,我有很多同一个应用程序的味道,略有不同。我想独立添加一个适用于所有口味的导航器。我使用的是Dagger2,我为每种口味都有一个子组件,我只为给定的味道注入东西。所以我也想注入一个Navigator类。
诀窍是,公共代码中的某些类也使用此导航器,并进行空检查。所以,如果它是空的,那很好,但如果不是那么做x。
所以我希望有一个类似的字段:
@Inject @Nullable Navigator navigator;
如果没有像这样的东西的@Provides方法,Dagger会给我一个错误,但这正是我想要的,我希望@Provides进入子模块但仍然注入公共代码库。
我怎样才能做到这一点?
答案 0 :(得分:2)
要支持可空类型,您只需在@Nullable
方法上添加@Provides
注释,该方法将返回可为空的类型,Dagger将接受该注释。
如果你不这样做,Dagger会抱怨你只能提供@Nullable
注释方法中的可空类型。
答案 1 :(得分:0)
如果您不想沿着注入可空对象的道路走下去,您可以在您的 dagger 模块中返回一个 Optional<Navigator>
- 从长远来看,您最终会得到更清晰的代码。