繁体   English   中英

Dagger2 允许注入为空

[英]Dagger2 allow injection to be null

所以,简而言之,我有很多相同应用程序的风格,但略有不同。 我想为所有口味独立添加一个导航器。 我正在使用 Dagger2,我为每种口味都有一个子组件,我只为给定的口味注入东西。 所以我也想注入一个 Navigator 类。

诀窍是,公共代码中的某些类也使用此导航器,并进行空检查。 因此,如果它为空,那很好,但如果不是,则执行 x。

所以我想要一个像这样的领域:

@Inject @Nullable Navigator navigator;

如果没有类似这样的 @Provides 方法,Dagger 会给我一个错误,但这正是我想要的,我希望 @Provides 进入子模块但仍然注入公共代码库。

我怎样才能做到这一点?

要支持可空类型,您只需在返回可空类型的@Provides方法上添加@Nullable注释,Dagger 就会接受它。

如果你不这样做,Dagger 会抱怨你只能从@Nullable注释方法中提供可为空的类型。

如果您不想走注入可空对象的道路,您可以在您的 dagger 模块中返回一个Optional<Navigator> - 从长远来看,您最终会得到更清晰的代码。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM