San*_*Lin 3 dependency-injection dagger-2
为什么要在提供方法之前使用static modifier?
即使我删除静态修改器,dagger2也能正常工作.
@Provides static Pump providePump(Thermosiphon pump) {
return pump;
}
Run Code Online (Sandbox Code Playgroud)
Jef*_*ica 10
两种风格都有效; 你是否保持方法静态完全取决于你和普通的"这应该是一个静态方法"判断普通旧Java.这里,pump对模块实例没有任何用处,因此该方法可以很容易地是静态的.
静态方法调用更快,特别是在Android中,因为它们避免了虚拟方法表查找.这也可以使编译器,JIT运行时或静态分析工具更容易内联.我猜想你可以通过制作课程或方法来开辟类似的优势final.
鉴于静态方法不能受实例字段的影响,可读性也可能略有提高,但这取决于您.
如果您确信您的@Provides方法的行为不会发生变化,包括在测试中,那么您可以利用性能/可读性的增加.但是,如果您需要引用模块状态或想要允许子类/测试覆盖,那么实例方法必然是正确的调用.
| 归档时间: |
|
| 查看次数: |
1590 次 |
| 最近记录: |