文档对此进行了很好的介绍,@Inject并且@Provides是在依赖关系图中引入依赖关系的两种不同方式。它们适用于不同的用例
@Inject@Inject构造函数或属性即可完成@Provides某些人更清楚@Provides@Inject@Inject@Provides该方法返回接口类型下面以上述三点为例@Provides
// You can't mark constructor of String with @Inject but you can use @Provides
@Provides
fun provideString(): String {
return "Hello World"
}
Run Code Online (Sandbox Code Playgroud)
@Provides
fun provideCar(): Car {
val car = Car()
// Do some configuration before introducing it in graph, you can't do this with @Inject
car.setMaxSpeed(100)
car.fillFuel()
return car
}
Run Code Online (Sandbox Code Playgroud)
interface Logger { fun log() }
class DiscLogger : Logger{ override fun log() { } }
class MemoryLogger : Logger { override fun log() { } }
@Provides
fun provideLogger(): Logger {
val logger = DiscLogger() \\ or MemoryLogger()
return logger
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2135 次 |
| 最近记录: |