dependency-injection - Dagger 2 - proxyProvide 方法的目的是什么?
问题描述
我已阅读以下问题: Purpose of proxyProvide in Dagger 2 generated code
但是,那里接受的答案指出,此方法的目的是使其可公开访问:
问题是,提供方法可能无法从与您的组件相同的包中访问,因此我们生成了这个“代理”方法,它为 Dagger 提供了正确的可访问性。
但如果@Provides
方法不是静态的,则模块实例是在本地创建并与参数一起传递
在组件中:
private Engine getEngine() {
return DieselEngineModule_ProvideEngineFactory.proxyProvideEngine(
dieselEngineModule, getDieselEngine());
}
在工厂:
public static Engine proxyProvideEngine(DieselEngineModule instance, DieselEngine engine) {
return Preconditions.checkNotNull(
instance.provideEngine(engine), "Cannot return null from a non-@Nullable @Provides method");
}
这两个参数都可以直接在组件中使用,因此目的不能是访问修饰符。proxyProvides
那么这种绕道而行的方法是什么原因呢?
解决方案
推荐阅读
- loops - SSIS foreach 循环枚举器 empty 为空 - 仅在部署时
- makefile - *.c 在依赖 xh 更改时不会反抗,使用自动生成的 *.d 文件
- tfs - Azure Devops - 是否可以防止复制或克隆工作项
- node.js - TypeError [ERR_UNESCAPED_CHARACTERS] 请求路径包含非转义字符
- css - 行跨度未在全日历中应用
- python-3.x - Python 3.7 Flask-SocketIO + uWSGI + nginx 配置
- powershell-3.0 - 5 台机器中有 1 台无法使用 Invoke-Command 共享权限
- r - r lm 参数估计
- mjpeg - 如果文件中定义了 MJPEG 帧速率,该怎么办?
- mongodb - 如何将 mongodb 会话放入 creachadair/jrpc2 处理程序中